Wpf显示数据表的集合

时间:2018-03-26 09:01:06

标签: c# wpf xaml

我有一个问题,我的词典看起来像:

public Dictionary<string, ValuesDataTable> ValuesDataTable {get; set;} = new Dictionary<string, ValuesDataTable>();

好吧,它就像它应该填充一个字符串和一个带数据的数据表,它可以。

但是因为这个字典可以有不同数量的值(DataTables),所以我不能将它分配给任何绑定属性(或者我可以吗?)。

所以我想知道是否可以为字典中的每个数据表显示数据网格数量?

某种foreach元素id字典

1 个答案:

答案 0 :(得分:1)

以下一种方法是在DataGrid内使用ListView

 <ListView ItemsSource="{Binding ValuesDataTable}">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <TextBlock Text="{Binding Key}"/>
                    <DataGrid ItemsSource="{Binding Value.MyDataTable}" AutoGenerateColumns="True" Grid.Row="1"/>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

假设您的模型看起来像这样:

 public class ValuesDataTable
{
    public DataTable MyDataTable { get; set; }
}

不要忘记设置DataContext并实施INotifyPropertyChanged界面:

    private Dictionary<string, ValuesDataTable> _valuesDataTable;
    public Dictionary<string, ValuesDataTable> ValuesDataTable
    {
        get { return _valuesDataTable; }
        set
        {
            if (Equals(value, _valuesDataTable)) return;
            _valuesDataTable = value;
            OnPropertyChanged();
        }
    }