首页 新闻 搜索 专区 学院

silverlight DataGrid RowDetailsTemplate的相关问题

0
悬赏园豆:100 [已解决问题] 解决于 2012-07-16 16:14

在RowDetailsTemplate 中定义一个DataGrid  给其指定数据源 数据源有数据 可是却无法显示数据 这是为什么?  是RowDetailsTemplate模版中不能定义Grid吗?还是其他的是原因呢?我将这个RowDetailsTemplate 中的Grid 放到 Grid外面可以显示数据   就是放到RowDetailsTemplate中无法显示,  请高手指教,谢谢!

问题补充:

後浪的主页 後浪 | 小虾三级 | 园豆:830
提问于:2012-07-02 13:59
< >
分享
最佳答案
0

我假设你的主  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}"

收获园豆:50
Launcher | 高人七级 |园豆:45045 | 2012-07-02 17:14

 我的也是   给主次分别绑定的数据集合   但关键是  主集合可以显示  次集合不能显示

後浪 | 园豆:830 (小虾三级) | 2012-07-02 17:27

@後浪: 你放到外面能显示,放到里面不能显示,是因为你的 Binding Path 不正确导致,嵌入在 Element 内部的绑定,Path 的默认寻址是从 Current Item 开始的。比如你的主Grid 绑定了 Order,那么每一条 Order 记录绑定到你的次Grid,你的次 Grid的DataContext就是你的主Grid,而不是包含你的主Grid的DataContext。

Launcher | 园豆:45045 (高人七级) | 2012-07-03 09:06
其他回答(1)
0

这儿有一个小例子:

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

 

不知道你是怎么绑定的。

收获园豆:50
悟行 | 园豆:12429 (专家六级) | 2012-07-02 14:05

  <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    数据集合是通过行点击的时候动态获取的。。 

支持(0) 反对(0) 後浪 | 园豆:830 (小虾三级) | 2012-07-02 14:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册