首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DataGrid中绑定DataGrid.RowDetailTemplate

如何在DataGrid中绑定DataGrid.RowDetailTemplate
EN

Stack Overflow用户
提问于 2016-05-29 09:39:57
回答 1查看 51关注 0票数 0

我在RowDataTemplete.I中创建了一个带有DataGrid的DataGrid,我需要通过以下方式绑定它

代码语言:javascript
复制
 <DataGrid Name="dgUsers" AutoGenerateColumns="False" Background="#FFDED6D6">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Name"  Binding="{Binding Name}" IsReadOnly="True" Foreground="#FF9C2626" />
            <DataGridTextColumn Header="Birthday" Binding="{Binding Birthday}" IsReadOnly="True" />
        </DataGrid.Columns>
        <DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <DockPanel Background="GhostWhite">
                    <Image DockPanel.Dock="Left" Source="{Binding ImageUrl}" Height="64" Margin="10" />
                    <Grid Margin="0,10">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>


                        <DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
                            <DataGrid.Columns>
                                <DataGridTextColumn Header="Item"  Binding="{Binding Path=Items.item}" IsReadOnly="True" Foreground="#FF9C2626" />
                                <DataGridTextColumn Header="Qty" Binding="{Binding Path=Items.qty}" IsReadOnly="True" />
                            </DataGrid.Columns>
                        </DataGrid>
                    </Grid>
                </DockPanel>
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>
    </DataGrid>

cs代码如下所示

代码语言:javascript
复制
 public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        List<User> users = new List<User>();
        users.Add(new User() { Id = 1, Name = "John Doe", Birthday = new DateTime(1971, 7, 23), ImageUrl = "http://www.wpf-tutorial.com/images/misc/john_doe.jpg", Items = new Items() { item="Thenga",qty="2"} });
                    users.Add(new User() { Id = 2, Name = "Jane Doe", Birthday = new DateTime(1974, 1, 17), Items = new Items() { item="Olakka",qty="5"}  });
                    users.Add(new User() { Id = 3, Name = "Sammy Doe", Birthday = new DateTime(1991, 9, 2), Items = new Items() { item = "Punnaak", qty = "3" } });

                    dgUsers.ItemsSource = users;
    }
    public class User
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public DateTime Birthday { get; set; }

        public string ImageUrl { get; set; }
        public Items Items { get; set; }
    }

    public class Items
    {
        public string item { get; set; }
        public string qty { get; set; }
    }

}

在运行上面的代码之后;RowDetailsTemplate没有绑定到我的数据。我需要您的帮助将DataGrid与DataGrid绑定为RowDetailsTemplate

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-29 10:10:06

如果我理解您的问题,您希望将内部DataGrid绑定到Items属性。如果是这样,那么这里的第一个问题是您需要将ItemsSource绑定到Items属性,而不是整个User,然后将内部DataGrid的列绑定到Items的属性

代码语言:javascript
复制
<DataGrid.RowDetailsTemplate>
   <DataTemplate>
      <!-- .... -->
      <DataGrid ItemsSource="{Binding Items}" ...>
          <DataGrid.Columns>
              <DataGridTextColumn Header="Item"  Binding="{Binding Path=item}" IsReadOnly="True" Foreground="#FF9C2626" />
              <DataGridTextColumn Header="Qty" Binding="{Binding Path=qty}" IsReadOnly="True" />
          </DataGrid.Columns>
      </DataGrid>
      <!-- .... -->
   </DataTemplate>
</DataGrid.RowDetailsTemplate>

第二个问题是,Users是单个项目,而不是列表。如果要将某些内容绑定到ItemsSource属性,则必须是IEnumerable,因此在视图模型中将其转换为列表

代码语言:javascript
复制
public class User
{
    ....

    public List<Items> Items { get; set; }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37508368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档