У меня есть два отдельных конвертера для видимости, один из которых основан на том, было ли поле обновлено, а другой - на том, разрешено ли просматривать поле. Я использую updatedField по одному для каждого текстового элемента на моей странице, чтобы рядом с обновленным полем появлялась звезда. Но некоторые текстовые элементы видны только некоторым пользователям на основании уровней разрешений.
Например:
<Image Visibility="{Binding ElementName=MyObject, Path=UpdatedFields, Mode=OneWay, Converter={StaticResource updatedFieldConverter}, ConverterParameter=FieldToTest}" Source="Properties:Resources.star_yellow" />
и
<TextBlock FontSize="21" Foreground="{DynamicResource LabelBrush}" Text="{x:Static Properties:Resources.Some_Text}" Visibility="{Binding Source={StaticResource allowedFields}, Path=Some_Text_Field, Converter={StaticResource visibilityConverter}}" />
Моя проблема в том, что в случае полей, требующих разрешения, мне нужно запустить оба конвертера, чтобы определить, появляется ли звезда. Есть ли способ сделать логическое «И» по результатам двух преобразователей?
Я посмотрел на этот пост , но, похоже, он не позволяет передавать разные наборы параметров двум разным конвертерам.
------- Обновление --------
Я также пытался создать MultiValueConverter с этим xaml
<Image Grid.Row="4" Grid.Column="0" Source="star_yellow.png">
<Image.Visibility>
<MultiBinding Converter="{StaticResource combinedVisibilityConverter}" ConverterParameter="FieldToTest" >
<Binding ElementName="allowedFieldsModel" Path="Some_Text_Field" Mode="OneWay" />
<Binding ElementName="MyObject" Path="UpdatedFields" Mode="OneWay" />
</MultiBinding>
</Image.Visibility>
</Image>
Но когда он входит в конвертер, оба значения равны «DependencyProperty.UnsetValue». Так что я, похоже, здесь что-то не так делаю.
-------- Решение ---------
Мне пришлось изменить это, но потом это сработало.
<Image.Visibility>
<MultiBinding Converter="{StaticResource combinedVisibilityConverter}" ConverterParameter="FieldToTest">
<Binding Source="{StaticResource allowedFieldsModel}" Path="Some_Text_Field" />
<Binding Path="MyObject.UpdatedFields" />
</MultiBinding>
</Image.Visibility>