在数据网格中添加行无法按预期工作 mvvm light
Adding rows in datagrid not working as expected mvvm light
我正在使用 mvvm Light,我想要的是 add/delete 我的数据网格中的一些行。显示了初始值,但是当我添加一些信息时,我的集合中填充了我输入的值,但它的类型是 GalaSoft.MvvmLight.ObservableObject
而不是 "MyType" 因此当我想删除一个新添加的排我的应用程序崩溃(SelectedItem
为空)...(如果我想删除不是手动添加的行,它可以工作!)。
<DataGrid Name="Table" ItemsSource="{Binding MyCollection}" SelectedItem="{Binding SelectedItem}" IsSynchronizedWithCurrentItem="True">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="*" Binding="{Binding Path=Id,Mode=TwoWay}" />
<DataGridTextColumn Header="Name" Width="*" Binding="{Binding Path=Name,Mode=TwoWay}" />
</DataGrid.Columns>
在视图模型中:
public MyType SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
RaisePropertyChanged();
}
}
public ObservableCollection<ObservableObject> MyCollection
{
get
{
return _myCollection;
}
set
{
_myCollection = value;
RaisePropertyChanged();
}
}
public RelayCommand RemoveRow { get { return new RelayCommand(RemoveRowCommand, CanRemove); } }
public RelayCommand AddRow { get { return new RelayCommand(AddRowCommand, CanAdd); } }
public void RemoveRowCommand()
{
MyCollection.Remove(SelectedItem);
}
public void AddRowCommand()
{
MyCollection.Add(SelectedItem);
}
使您的 class 继承 BindableBase。
让 属性 像这样
private ObservableColletion<ObservableObject> _myCollection;
public ObservableCollection<ObservableObject> MyCollection
{
get
{
return _myCollection;
}
set
{
SetProperty(ref _myCollection,new ObservableCollection<ObservableObject>(value));
}
}
SetProperty 方法(来自 BindableBase class)负责引发 属性 更改事件。它应该有效:)
我正在使用 mvvm Light,我想要的是 add/delete 我的数据网格中的一些行。显示了初始值,但是当我添加一些信息时,我的集合中填充了我输入的值,但它的类型是 GalaSoft.MvvmLight.ObservableObject
而不是 "MyType" 因此当我想删除一个新添加的排我的应用程序崩溃(SelectedItem
为空)...(如果我想删除不是手动添加的行,它可以工作!)。
<DataGrid Name="Table" ItemsSource="{Binding MyCollection}" SelectedItem="{Binding SelectedItem}" IsSynchronizedWithCurrentItem="True">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="*" Binding="{Binding Path=Id,Mode=TwoWay}" />
<DataGridTextColumn Header="Name" Width="*" Binding="{Binding Path=Name,Mode=TwoWay}" />
</DataGrid.Columns>
在视图模型中:
public MyType SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
RaisePropertyChanged();
}
}
public ObservableCollection<ObservableObject> MyCollection
{
get
{
return _myCollection;
}
set
{
_myCollection = value;
RaisePropertyChanged();
}
}
public RelayCommand RemoveRow { get { return new RelayCommand(RemoveRowCommand, CanRemove); } }
public RelayCommand AddRow { get { return new RelayCommand(AddRowCommand, CanAdd); } }
public void RemoveRowCommand()
{
MyCollection.Remove(SelectedItem);
}
public void AddRowCommand()
{
MyCollection.Add(SelectedItem);
}
使您的 class 继承 BindableBase。 让 属性 像这样
private ObservableColletion<ObservableObject> _myCollection;
public ObservableCollection<ObservableObject> MyCollection
{
get
{
return _myCollection;
}
set
{
SetProperty(ref _myCollection,new ObservableCollection<ObservableObject>(value));
}
}
SetProperty 方法(来自 BindableBase class)负责引发 属性 更改事件。它应该有效:)