我正在使用 MVVM 模式,在我看来我有这个dataGrid
:
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource myMultiValueConverter}">
<MultiBinding.Bindings>
<Binding />
<Binding ElementName="ThisControl" Path="DataContext.MyObservableCollectionInViewModel"/>
<Binding ElementName="thisControl" Path="DataContext.ControlType"/>
<Binding ElementName="ThisControl" Path="DataContext.ExternalItems"/>
<Binding Path="Componentes.OneProperty"/>
</MultiBinding.Bindings>
</MultiBinding>
</Setter.Value>
</Setter>
我的视图模型有这个代码:
private void myMethod()
{
MyObservableCollectionInViewModel.Clear();
MyObservableCollectionViewModel.Add(new myType());
}
当我执行该方法MyMethod()
时,如果我没有错,多值转换器将运行,因为当我添加或删除项目时ObservableCollection
执行器INotifyPropertyChanged
,但在这种情况下不起作用。
但是我有另一个我的ObservableCollection
,它按预期工作,当我从.DataSource
dataGrid
dataGrid
ObservableCollection
但是,如果myMethod
我这样做:
private myMethod()
{
myObservableCollectionInMyViewModel.Clear();
myObservableCollectionInMyViewModel.Add(new MyType());
myObservableCollectionInMyViewModel = new ObservableCollection(myObservableCollectionInMyViewModel);
}
它可以工作,所以当我创建一个新的时,视图会被通知ObservableCollection
,而不是当我从实际的ObservableCollecion
.