У меня проблема с MultiValueConverter, который все больше и больше напоминает ошибку .NET, чем больше я пытаюсь ее исправить.Вот что случилось:
Я связываю свойство IsEnabled как Stackpanel, так и User Control (UC), используя аналогичное определение MultiBinding (конечно, я использую <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), все преобразователи вызываются снова, и параметр values()
MultiValueConverter содержит NamedObject
для обоих входов.Преобразователи с одним значением, использующие те же свойства, работают нормально.
Я не могу понять это.Я даже пытался использовать RelativeSource для MultiBindings, но безрезультатно.
У меня есть два вопроса:
Как значения в MultiBindingConverter могут быть NamedObject
когда привязки с одним значением работают нормально
Менее важный вопрос заключается в том, почему привязки вызываются при изменении содержимого элемента TabItem (обратите внимание, что эти преобразователи вызываются до UserControl.Unloaded)
Спасибо, Дейв