在RowDetailsTemplate 中定义一个DataGrid 给其指定数据源 数据源有数据 可是却无法显示数据 这是为什么? 是RowDetailsTemplate模版中不能定义Grid吗?还是其他的是原因呢?我将这个RowDetailsTemplate 中的Grid 放到 Grid外面可以显示数据 就是放到RowDetailsTemplate中无法显示, 请高手指教,谢谢!
我假设你的主 Grid 绑定到 ObservableCollection<Order> 集合ItemsSource="{Binding Path=Orders}",Order 定义如下:
public class Order : INotifyPropertyChanged
{
private ObservableCollection<OrderItem> _orderItems;
public ObservableCollection<OrderItem> OrderItems
{
get{return this._orderItems;}
set {if(this._orderItems != value) {this._orderItems =value;this.OnPropertyChanged("OrderItems");}}
}
}
现在你为每一个 Product 添加一个子 Grid,并绑定 OrderItems 属性:
则子 Grid 的绑定语句为: ItemsSource="{Binding Path=OrderItems}"
我的也是 给主次分别绑定的数据集合 但关键是 主集合可以显示 次集合不能显示
@後浪: 你放到外面能显示,放到里面不能显示,是因为你的 Binding Path 不正确导致,嵌入在 Element 内部的绑定,Path 的默认寻址是从 Current Item 开始的。比如你的主Grid 绑定了 Order,那么每一条 Order 记录绑定到你的次Grid,你的次 Grid的DataContext就是你的主Grid,而不是包含你的主Grid的DataContext。
这儿有一个小例子:
Here is how to do it: public class Product { public int ProductID { get; set; } public string Name { get; set; } } public class Category { public int CategoryID { get; set; } public string Name { get; set; } public List<Product> Products { get; set; } } XAML: <data:DataGrid x:Name="theGrid" AutoGenerateColumns="True" RowDetailsVisibility="VisibleWhenSelected" HeadersVisibility="All" > <data:DataGrid.RowDetailsTemplate> <DataTemplate> <data:DataGrid Height="100" ItemsSource="{Binding Products}" AutoGenerateColumns="True" HeadersVisibility="Column"></data:DataGrid> </DataTemplate> </data:DataGrid.RowDetailsTemplate> </data:DataGrid> Code to test: List<Category> Categories = new List<Category>(); for (int i = 1; i < 11; i++) { Category cat = new Category { CategoryID = i, Name = "Category" + i }; cat.Products = new List<Product>(); for (int j = 1; j < 6; j++) { Product p = new Product { ProductID = (i * j), Name = "Product " + (i * j).ToString() }; cat.Products.Add(p); } Categories.Add(cat); } theGrid.ItemsSource = Categories;
http://forums.silverlight.net/t/16838.aspx
不知道你是怎么绑定的。
<sdk:DataGrid.RowDetailsTemplate>
<DataTemplate>
<sdk:DataGrid AutoGenerateColumns="False"
ItemsSource="{Binding Path=DataContext.DataSourceRtdModule, ElementName=RTDManage_MainView, Mode= TwoWay}"
Height="100">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="本地卡IMSI"
Width="*">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.imsi,ElementName=RTDManage_MainView,Mode=TwoWay}" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</DataTemplate>
</sdk:DataGrid.RowDetailsTemplate>
这是我的行明细的xaml 数据集合是通过行点击的时候动态获取的。。