我有一个 MultiValueConverter 的问题,我越是尝试修复它,它就越感觉像一个 .NET 错误。这是怎么回事:
我正在使用类似的 MultiBinding 定义绑定 Stackpanel 和用户控件 (UC) 的 IsEnabled 属性(当然,我使用<ns:usercontrolname.IsEnabled>
的是 UC):
<StackPanel.IsEnabled>
<MultiBinding Converter="{StaticResource InfoSectionIsEnabled}">
<Binding Path="IsInactive" />
<Binding Path="IsWaitingForMicro" />
</MultiBinding>
</StackPanel.IsEnabled>
“当前”UC(包含此 XAML 的)正在分配给 TabItem.Content。DataContext 在 TabItem 处设置。
我还在同一个“当前”UC 上的两个单独的单值绑定中使用上述属性:
<scps:ucSOIA x:Name="ucSOIA" IsEnabled="{Binding Path=IsWaitingForMicro, Converter={StaticResource InvertBool}}"/>
和
<scps:ucMisc x:Name="ucMisc" IsEnabled="{Binding Path=IsInactive, Converter={StaticResource InvertBool}}"/>
当“当前”UC 第一次实例化并分配给 TabItem 的内容时,所有绑定都可以正常工作。但是,一旦我将 TabItem 的内容更改为不同的 UC(不处理实例化的“当前”UC),就会再次调用所有转换器,并且 MultiValueConverter 的values()
参数包含NamedObject
两个整体。使用完全相同的属性的单值转换器工作正常。
我想不通。我什至尝试在 MultiBindings 上使用 RelativeSource,但无济于事。
我有两个问题:
NamedObject
当单值绑定正常工作时,MultiBindingConverter 中的值如何不太重要的问题是为什么在我更改 TabItem 的内容时调用绑定(请注意,这些转换器是在 UserControl.Unloaded 之前调用的)
谢谢,戴夫