带有字典的 C# WPF ObservableCollection 到 MVVM Datagrid
C# WPF ObservableCollection with dictionary inside to MVVM Datagrid
问题已解决,我不再使用字典,而是将其“转换”为 OS (ObservableCollection),并将其绑定到 DatagridTemplateColumn
内的 Datagrid
我正在尝试添加我的 ObservableCollaction,它有一个 属性 Name
和一个具有以下属性的字典:Name
、AvgPrice
和 Shares
。
如何将字典中的 Name
、AvgPrice
和 Shares
获取到 DataGrid?
ObservableCollection:
private ObservableCollection<WatchlistModel> _watchlists;
public ObservableCollection<WatchlistModel> Watchlists
{
get { return _watchlists; }
set { _watchlists = value; OnPropertyChanged(); }
}
监视列表模型
private string _name;
public string Name
{
get { return _name; }
set { if(_name != value) { _name = value; OnPropertyChanged(); } }
}
private Dictionary<string, StockModel> _stocks;
public Dictionary<string, StockModel> Stocks
{
get { return _stocks; }
set { if (_stocks != value) { _stocks = value; OnPropertyChanged(); } }
}
数据网格
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=Watchlists, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
<DataGridTextColumn Header="Average Price" Binding="{Binding Path=AvgPrice}" />
<DataGridTextColumn Header="Shares" Binding="{Binding Path=Shares}" />
</DataGrid.Columns>
</DataGrid>
Json格式
{
"name": "My Watchlist",
"stocks": {
"Zaptec": {
"avgPrice": "2,14",
"name": "Zaptec",
"shares": 121
}
}
}
使用
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<!-- Here you can add items control or whatever and bound its ItemSource to your
Stocks -->
</DataTemplate>
</DataGridTemplateColumn>
</DataGridTemplateColumn.CellTemplate>
但我不建议你使用词典。改为制作 ObservableCollection。 Bind Dictionary with observe on Items changed 是相当困难的。
问题已解决,我不再使用字典,而是将其“转换”为 OS (ObservableCollection),并将其绑定到 DatagridTemplateColumn
内的 Datagrid我正在尝试添加我的 ObservableCollaction,它有一个 属性 Name
和一个具有以下属性的字典:Name
、AvgPrice
和 Shares
。
如何将字典中的 Name
、AvgPrice
和 Shares
获取到 DataGrid?
ObservableCollection:
private ObservableCollection<WatchlistModel> _watchlists;
public ObservableCollection<WatchlistModel> Watchlists
{
get { return _watchlists; }
set { _watchlists = value; OnPropertyChanged(); }
}
监视列表模型
private string _name;
public string Name
{
get { return _name; }
set { if(_name != value) { _name = value; OnPropertyChanged(); } }
}
private Dictionary<string, StockModel> _stocks;
public Dictionary<string, StockModel> Stocks
{
get { return _stocks; }
set { if (_stocks != value) { _stocks = value; OnPropertyChanged(); } }
}
数据网格
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=Watchlists, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
<DataGridTextColumn Header="Average Price" Binding="{Binding Path=AvgPrice}" />
<DataGridTextColumn Header="Shares" Binding="{Binding Path=Shares}" />
</DataGrid.Columns>
</DataGrid>
Json格式
{
"name": "My Watchlist",
"stocks": {
"Zaptec": {
"avgPrice": "2,14",
"name": "Zaptec",
"shares": 121
}
}
}
使用
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<!-- Here you can add items control or whatever and bound its ItemSource to your
Stocks -->
</DataTemplate>
</DataGridTemplateColumn>
</DataGridTemplateColumn.CellTemplate>
但我不建议你使用词典。改为制作 ObservableCollection。 Bind Dictionary