【发布时间】:2015-07-17 13:49:22
【问题描述】:
我有一个IMultivalueConverter,当PropertyA 或PropertyB 更改时,它会更新StackPanel 的背景颜色。这些控件是动态创建的。
问题:
我添加了两个StackPanels,并在单击按钮时更改了代码中的PropertyA。这会导致属性更改事件。
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
对于第一个stackpanel,背景颜色不会更新,但对于第二个stackpanel,this.PropertyChanged 会调用我的 MultiValueConverter 并更新背景颜色。
我不明白为什么当两个控件都属于同一类型并且事件处理程序不为空时,为什么只有一个控件正在更新。
编辑: 如果我将其他控件(DevExpress DataGrid)中的单元格值拖放到第一个堆栈面板中,然后更改属性,则背景不会更新。在我拖放之前它工作正常。
更新:
<StackPanel.Background>
<MultiBinding Converter="{StaticResource ResourceKey=BackgroundColorConverter}">
<Binding Path="PropertyA" UpdateSourceTrigger="PropertyChanged" />
<Binding Path="PropertyB" UpdateSourceTrigger="PropertyChanged" />
</MultiBinding>
</StackPanel.Background>
更新 2: 我也尝试过使用 MultiDataTrigger 而不是 Converter,但无法解决问题。
【问题讨论】:
-
请您也发布您的 XAML 吗?
-
您能否详细说明动态创建哪些控件以及如何创建?
标签: wpf drag-and-drop inotifypropertychanged imultivalueconverter devexpress-wpf