2015-07-03 27 views
0

我正在使用mvvm Light,我想要的是在我的数据网格中添加/删除一些行。显示初始值,但是当我添加一些信息时,我的集合中填入了我输入的值,但其类型为GalaSoft.MvvmLight.ObservableObject而不是“MyType”,因此当我想要删除新添加的行时,我的应用程序会分裂(SelectedItem是空)...(如果我想删除一个没有手动添加的行,它就起作用了!)。在datagrid中添加行不能按预期方式工作mvvm light

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

回答

0

让你的类继承BindableBase。 作出财产LIK这

private ObservableColletion<ObservableObject> _myCollection; 
public ObservableCollection<ObservableObject> MyCollection 
{ 
    get 
    { 
    return _myCollection; 
    } 
    set 
    { 
    SetProperty(ref _myCollection,new ObservableCollection<ObservableObject>(value)); 
    } 
} 

SetProperty方法(从BindableBase类)需要大约提高属性更改事件的照顾。它应该工作:)