c# - WPF ObservableCollection 更新 DataGrid MVVM
问题描述
我试图ObservableCollection
反映DataGrid
. 我的问题是,DataGrid
当我在集合中添加新元素时不显示更改,其中没有新行DataGrid
。这ViewModel
是绑定到 Window 的类
public class MainWindowViewModel : INotifyPropertyChanged
{
private ObservableCollection<Configuration> configuration;
public MainWindowViewModel()
{
configuration = new ObservableCollection<Model.Configuration>();
}
public ObservableCollection<Configuration> Configuration {
get { return configuration; }
set { configuration = value;
OnProperyChanged("Configuration");
}}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void OnProperyChanged(string propertyChanged)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyChanged));
}
}
#endregion}
而我DataGrid
的是
<DataGrid x:Name="maintable" IsReadOnly="True" ItemsSource="{Binding Configuration}" CanUserAddRows="False" AutoGenerateColumns="False" Height="180" Margin="10,61,391,0" VerticalAlignment="Top">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding Id}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Price" Binding="{Binding Price}"/>
<DataGridTextColumn Header="Description" Width="300" Binding="{Binding Description}"/>
解决方案
由于某种原因DataGrid
ItemsSource
需要添加Mode=OneWay
,现在 DataGrid 在 ObservableCollection 更改时正在更新
<DataGrid x:Name="maintable" IsReadOnly="True" ItemsSource="{Binding Configuration, Mode=OneWay}" CanUserAddRows="False" AutoGenerateColumns="False" Height="180" Margin="10,61,391,0" VerticalAlignment="Top">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding Id}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Price" Binding="{Binding Price}"/>
<DataGridTextColumn Header="Description" Width="300" Binding="{Binding Description}"/>
推荐阅读
- mysql - ERROR 1130 (HY000): Host '{ip_address}.subs.proxad.net' is not allowed to connect to this MySQL server
- python - mypy 找不到模块的实现或库存根
- html - 如何使 div 元素的背景透明,顶部有元素?
- php - Wordpress:在另一个函数ajax动作上调用插件函数?
- vb.net - 数据库Sqlite插入日期时间
- mongodb - MongoDB Compass:无法过滤特定 ID
- javascript - 如何向节点 js 服务器发出 post 请求
- java - 使用 Postgresql v13 配置 Keycloak v15
- vb.net - VB.net 连接字符串有效,然后无效,然后有效 - 为什么?
- android - 在 android studio 中使用自己的域发送电子邮件