在datagrid中添加行不能按预期工作mvvm light

时间:2015-07-03 14:04:16

标签: c# wpf mvvm-light wpfdatagrid

我正在使用mvvm Light,我想要的是在我的数据网格中添加/删除一些行。显示初始值,但是当我添加一些信息时,我的集合中填充了我输入的值,但其类型为GalaSoft.MvvmLight.ObservableObject而不是“MyType”,因此当我想删除新添加的行时应用程序craches(SelectedItem为null)...(如果我想删除未手动添加的行,它可以工作!)。

<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>

       

在viewModel中:

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);
}

1 个答案:

答案 0 :(得分:0)

让你的类继承BindableBase。 让财产喜欢这个

<button ng-click="$storage.x = $storage.x + 1">{{$storage.x}}</button>

SetProperty方法(来自BindableBase类)负责提升属性更改事件。它应该有效:)