【发布时间】:2014-06-01 08:59:13
【问题描述】:
我正在尝试学习 MVVM(使用 MVVMLight 工具包)。但我被困住了。
在 ViewModel 中有一个 ObservableCollection
private ObservableCollection<Phone> _phoneNumbers;
public ObservableCollection<Phone> PhoneNumbers
{
get { return _phoneNumbers; }
private set
{
_phoneNumbers = value;
}
}
在 ViewModel 构造函数中这样填写 PhoneNumbers = new ObservableCollection<Phone>(Guest.Person.Phones);
考虑有
<DataGrid x:Name="PhoneNumbersDataGrid" HorizontalAlignment="Left" Grid.Column="3" Grid.Row="11" VerticalAlignment="Top" Height="86" Width="auto" ItemsSource="{Binding PhoneNumbers, Mode=OneWay}" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding PhoneNumber}" Header="Phone Number" IsReadOnly="True"/>
<DataGridTemplateColumn Header="Delete">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Command="{Binding Guest.DeletePhoneCommand, Mode=OneWay, Source={StaticResource Locator}}">Delete</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
在 DeletePhoneCommand 中,我正在尝试更改 PhoneNumbers,例如
PhoneNumbers = new ObservableCollection<Phone>();
RaisePropertyChanged("PhoneNumbers");
集合变为空,但数据网格显示填充集合,没有任何更改。只有在加载视图时才会触发 Collection 的“get”。即使我 RaisePropertyChanged("PhoneNumbers") 它也不会触发。
我做错了什么?
【问题讨论】:
标签: c# wpf mvvm datagrid observablecollection