我有一个问题,我的词典看起来像:
public Dictionary<string, ValuesDataTable> ValuesDataTable {get; set;} = new Dictionary<string, ValuesDataTable>();
好吧,它就像它应该填充一个字符串和一个带数据的数据表,它可以。
但是因为这个字典可以有不同数量的值(DataTables),所以我不能将它分配给任何绑定属性(或者我可以吗?)。
所以我想知道是否可以为字典中的每个数据表显示数据网格数量?
某种foreach元素id字典
答案 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();
}
}