c# - 多个 DataGrid 列标题的绑定(bind)

标签 c# wpf xaml binding wpfdatagrid

我在 TechNet 看到了这段代码示例女巫展示了如何绑定(bind)单个列标题标题及其对应的列数据:

<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.Header>
                <TextBlock Text="{Binding DataContext.HeaderNameText, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
            </DataGridTemplateColumn.Header>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding}" />
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>   

DataGrid 的 DataContext 设置如下:

Data data = new Data();
data.HeaderNameText = "Header2";
data.Items = new List<string>() { "Item1", "Item2" };
DataContext = data;

数据类结构如下:

public class Data
{
    public string HeaderNameText { get; set; }
    public List<string> Items { get; set; }
}

我的问题是如何将 DataGrid ItemSource 绑定(bind)到多列数据:

List<Data> data=new List<Data>();

我希望为上面列表中的每个数据元素获得一列,那么如何实现呢?

最佳答案

给定的方法只定义了一列

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn ...>
    </DataGrid.Columns>
</DataGrid>

对于多个列,您必须多次定义它

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn ...>
        <DataGridTemplateColumn ...>
        <DataGridTemplateColumn ...>
    </DataGrid.Columns>
</DataGrid>

如果你这样定义列

public class Data
{
    public string[] HeaderNameText { get; set; } // array, list, etc.
    public List<string> Items { get; set; }
}

然后绑定(bind)会是这样的

{Binding DataContext.HeaderNameText[0] ...}
{Binding DataContext.HeaderNameText[1] ...}

等等

关于c# - 多个 DataGrid 列标题的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26778441/

相关文章:

c# - WPF 中的线条效果

c# - 对 List<bool> 的按位运算

c# - ASP.NET MVC 会吞下提交值吗?

c# - 将资源字典文件动态加载到 wpf 应用程序会出错

c# - 从另一个更新一个依赖属性

c# - 在 xaml 中悬停时更改按钮颜色

c# - 如何更新编译器?

c# - 从同一网络上的另一台 PC 测试 wcf web 服务

wpf - RichTextBox 中字符输入太慢,如何让输入更快?

wpf - 数据网格按钮列