更新我有一個DataGrid(的ItemsSource是一個ObservableCollection)被定義爲這樣一個DataGridCheckBoxColumn:WPF DataGridCheckBoxColumn的狀態沒有得到來自視圖模型
<DataGrid AutoGenerateColumns="False"
SelectionUnit="FullRow"
CanUserAddRows="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
IsReadOnly="True"
SelectionMode="Single"
ItemsSource="{Binding SearchResult, Mode=TwoWay, NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged}">
<!--additional columns-->
<DataGridCheckBoxColumn Header="Add"
IsReadOnly="False"
Binding="{Binding Path=IsSelected, Mode=TwoWay, NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged}">
</DataGrid>
綁定在一個方向做工精細,視圖模型可以看到收集中的變化,但不適用於其他方向。當然,我可以在更新後重新初始化集合,但是當然,這會弄亂排序順序。
List<int> Ids = new List<int>();
foreach (var result in SearchResult) // binding source, of type ObservableCollection
{
if (result.IsSelected)
{
Ids.Add(result.Id);
result.IsSelected = false; // should uncheck the corresponding DataGridCheckBoxColumn cell
}
}
//SearchResult = new ObservableCollection<SearchSeries>(SearchResult); // does the job but rearranges the sorting
//RaisePropertyChanged("SearchResult"); // doesn't work either
我正在使用VS 2013和最新的可用MVVM Light Toolkit。
當IsSelected從ViewModel更改時,您是否引發屬性更改事件? –
如果我沒有弄錯,RaisePropertyChanged(「SearchResult」)行不應該完全相同嗎? IsSelected是SearchResult成員的屬性。 – Venom
在IsSelected的集合中,您應該有RaisePropertyChanged(「IsSelected」) –