【问题标题】:How to bind collection to datagrid column in WPF如何将集合绑定到 WPF 中的数据网格列
【发布时间】:2018-02-05 08:21:39
【问题描述】:

我有以下型号:

public class Order
{
 public Order()
 {
    Specifications = new List<string>();
 }
 public Guid Id { get; set; }
 public DateTime CreateDate { get; set; }
 public ICollection<string> Specifications { get; set; }
}

 public class Context: INotifyPropertyChanged
 {
    private ObservableCollection<Order> orders;
    public ObservableCollection<Order> Orders
    {
        get { return orders; }
        set
        {
            orders = new ObservableCollection<Order>(value);

        }
    }
 }

我正在使用以下方法将集合绑定到 Xaml 中的数据网格:

<Window.DataContext>
        <viewModel:Context/>
</Window.DataContext>
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Orders}" HorizontalAlignment="Stretch" Margin="5" Name="dgUserList" VerticalAlignment="Stretch" >
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Id}"/>
                <DataGridTextColumn Binding="{Binding CreateDate}" />
            </DataGrid.Columns>
</DataGrid>

如何添加另一列来绑定规范?我试过了:

<DataGridTemplateColumn>
           <DataGrid ItemsSource="{Binding Specifications}"></DataGrid>
 </DataGridTemplateColumn>

但我得到了

无法解析数据上下文中的规范

【问题讨论】:

  • 您是否正确分配了DataContext?
  • 是的,它被分配给包含 ObservableCollection Orders 的类,Id 和 CreateDate 列工作正常
  • @ViRuSTRiNiTy 问题已更新

标签: c# wpf data-binding datagrid


【解决方案1】:

这是一个使用 ListBox 的解决方案:

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ListBox ItemsSource="{Binding Specifications}"></ListBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 2019-08-29
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2011-04-07
    相关资源
    最近更新 更多