【发布时间】:2011-09-24 00:34:15
【问题描述】:
我有两个单独的可见性转换器,一个基于字段是否已更新,一个基于是否允许查看字段。我为页面上的每个文本项使用 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}}" />
我的问题是,对于需要权限的字段,我需要运行两个转换器以确定星号是否出现。有没有办法对两个转换器的结果进行布尔“与”运算?
我查看了this post,但它似乎不允许将不同的参数集传递给两个不同的转换器。
-------更新--------
我也尝试用这个 xaml 创建一个 MultiValueConverter
<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>
【问题讨论】:
标签: wpf data-binding converter