如何绑定到DataGrid上的列项

时间:2015-08-29 18:20:47

标签: wpf

我用3列定义DataGrid。 每列都包含一个项目集合。

我不知道如何在每个列和我希望在每列上显示的项列表之间进行此绑定。

这是我到目前为止编写的代码

<DataGrid Grid.Row="0" x:Name="table" AutoGenerateColumns="False">
        <DataGrid.Columns>

            <DataGridTextColumn Header="Result1" Width="*">
                // <list of item 1 >
            </DataGridTextColumn>

            <DataGridTextColumn Header="Result2" Width="*">
                // <list of item 2 >
            </DataGridTextColumn>

            <DataGridTextColumn Header="Result2" Width="*">
                // <list of item 3 >
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

1 个答案:

答案 0 :(得分:1)

dataGrid通常用于显示具有多个属性的项目列表,对于您的情况类似:

public class Item
{
    public String Result1 { get; set; }
    public String Result2 { get; set; }
    public String Result3 { get; set; }
}

绑定集合

public ObservableCollection<Item> ListOfResultItems { get; set; }

并且每个属性都绑定到其相应的列

<DataGrid Grid.Row="0" x:Name="table" AutoGenerateColumns="False" ItemsSource="{Binding ListOfResultItems}">
        <DataGrid.Columns>

            <DataGridTextColumn Binding="{Binding Result1}" Header="Result1" Width="*">                    
            </DataGridTextColumn>

            <DataGridTextColumn Binding="{Binding Result2}" Header="Result2" Width="*">                  
            </DataGridTextColumn>

            <DataGridTextColumn Binding="{Binding Result3}" Header="Result2" Width="*">                    
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

如果您想要显示彼此相邻的三个列表,那么我相信一个简单的DataGrid不是您的最佳镜头,我建议您定义三个单列的DataGrid或{{1} },将每个List绑定到相应的列表,并根据您的需要链接他们的垂直滚动。

ListView

并定义Results类并定义集合

<Grid >
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <DataGrid Grid.Column="0"  AutoGenerateColumns="False" ItemsSource="{Binding ListResult1}">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Name}" Header="Result1" Width="*">                    
            </DataGridTextColumn>              
        </DataGrid.Columns>
    </DataGrid>
    <DataGrid Grid.Column="1"  AutoGenerateColumns="False" ItemsSource="{Binding ListResult2}">
        <DataGrid.Columns>                
            <DataGridTextColumn Binding="{Binding Name}" Header="Result2" Width="*">                  
            </DataGridTextColumn>               
        </DataGrid.Columns>
    </DataGrid>
    <DataGrid Grid.Column="2"  AutoGenerateColumns="False" ItemsSource="{Binding ListResult3}">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Name}" Header="Result3" Width="*">
            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>
</Grid>