我有一种情况需要显示一个整数值,绑定到我的数据上下文中的属性,然后通过两次单独的转换:
我意识到我可以通过创建自己的转换器(实现IValueConverter)来完成这两个步骤.但是,我已经有一个单独的值转换器,只执行第一步,第二步由Int32Converter覆盖.
有没有办法在XAML中链接这两个现有的类而不必创建另一个聚合它们的类?
如果我需要澄清这些,请告诉我.:)
谢谢.
我有两个独立的可见性转换器,一个基于字段是否已更新,另一个基于是否允许查看字段.我对我页面上的每个文本项使用updatedField,以便在更新的字段旁边显示一个星号.但是某些用户只能根据权限级别看到某些文本项.
例如:
<Image Visibility="{Binding ElementName=MyObject, Path=UpdatedFields, Mode=OneWay, Converter={StaticResource updatedFieldConverter}, ConverterParameter=FieldToTest}" Source="Properties:Resources.star_yellow" />
Run Code Online (Sandbox Code Playgroud)
和
<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}}" />
Run Code Online (Sandbox Code Playgroud)
我的问题是,对于需要许可的字段,我需要运行两个转换器来确定星是否出现.有没有办法在两个转换器的结果上做一个布尔"And"?
我查看了这篇文章,但它似乎不允许将不同的参数集传递给两个不同的转换器.
------- --------更新
我还试图用这个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>
Run Code Online (Sandbox Code Playgroud)
但是当它进入转换器时,两个值都是"DependencyProperty.UnsetValue".所以我显然在这里做错了.
- - - - 解 - - - - -
我不得不修改它,但后来它工作了.
<Image.Visibility>
<MultiBinding Converter="{StaticResource combinedVisibilityConverter}" ConverterParameter="FieldToTest">
<Binding Source="{StaticResource allowedFieldsModel}" Path="Some_Text_Field" />
<Binding Path="MyObject.UpdatedFields" …Run Code Online (Sandbox Code Playgroud) 对于该List对象,我们有一个名为Reverse()的方法.
它反转了"就地"列表的顺序,它不会返回任何内容.
对于该IEnumerable对象,我们有一个名为Reverse()的扩展方法.
它返回另一个IEnumerable.
我需要在列表中以相反的顺序迭代,所以我不能直接使用第二种方法,因为我得到一个List,我不想反转它,只是向后迭代.
所以我可以这样做:
for(int i = list.Count - 1; i >=0; i--)
Run Code Online (Sandbox Code Playgroud)
要么
foreach(var item in list.AsEnumerable().Reverse())
Run Code Online (Sandbox Code Playgroud)
我发现它的可读性低于我拥有IEnumerable时的可读性
foreach(var item in list.Reverse())
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么这两种方法以这种方式实现,具有相同的名称.这很令人讨厌和困惑.
为什么没有一个名为BackwardsIterator()的扩展名在Reverse()的地方为所有IEnumerable工作?
我对这种选择的历史原因非常感兴趣,而不是"怎么做"的东西!
我想知道在使用wpf数据绑定时是否可以级联转换器.例如
<SomeControl Visibility="{Binding Path=SomeProperty, Converter={StaticResource firstConverter}, Converter={StaticResource secondConverter}}"/>
Run Code Online (Sandbox Code Playgroud)
它是否可能或者我是否必须创建一个结合了转换器A和B的功能的定制转换器?
data-binding ×3
wpf ×3
converter ×2
xaml ×2
binding ×1
c# ×1
ienumerable ×1
linq ×1
list ×1
reverse ×1