WPF:在GridViewColumn中使用PriorityBinding代替DisplayMemberBinding
本文关键字:PriorityBinding 代替 DisplayMemberBinding GridViewColumn WPF | 更新日期: 2023-09-27 18:05:06
我在WPF中为GridViewColumn
设置了DisplayMemberBinding
。
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderErrorType}" DisplayMemberBinding="{Binding Exception, Mode=OneWay, Converter={StaticResource typeConverter}, FallbackValue='---'}"/>
typeConverter
"模仿"Exception.GetType()
扩展,在Gui中以字符串形式显示异常的类型。如果没有异常,这个值为null,我想在这一列中输出另一个属性。现在我想使用PriorityBinding
作为DisplayMemberBinding
,但GridViewColumn
都没有将PriorityBinding
作为"子元素",也不可能使用DisplayMemberBinding
属性作为"子元素"。是否有一种方法使用PriorityBinding
GridViewColumn
像这样:
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderErrorType}">
<PriorityBinding>
<Binding Path="Exception" Mode="OneWay" Converter="{StaticResource typeConverter}" IsAsync="True" />
<Binding Path="AnotherProperty" IsAsync="True" />
</PriorityBinding>
</GridViewColumn>
编辑
我将我的代码改为下面的"ASh"建议,但它不起作用:
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderErrorType}">
<GridViewColumn.DisplayMemberBinding>
<PriorityBinding FallbackValue="-*-">
<Binding Path="Exception" Converter="{StaticResource typeConverter}" Mode="OneWay" IsAsync="True"/>
<Binding Path="Comment" FallbackValue="---"/>
</PriorityBinding>
</GridViewColumn.DisplayMemberBinding>
</GridViewColumn>
如果Exception
属性为空,则显示值为空。我检查了第二个绑定属性"comment"是否设置,它是。
这两个绑定可以正常工作:
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderComment}" DisplayMemberBinding="{Binding Comment, FallbackValue='---'}"/>
<GridViewColumn Header="test2" DisplayMemberBinding="{Binding Exception, Mode=OneWay, Converter={StaticResource typeConverter}, FallbackValue='---'}"/>
您缺少<GridViewColumn.DisplayMemberBinding>
标签:
<GridViewColumn>
<GridViewColumn.DisplayMemberBinding>
<PriorityBinding>
<Binding Path="Exception" Mode="OneWay" Converter="{StaticResource typeConverter}" IsAsync="True" />
<Binding Path="AnotherProperty" IsAsync="True" />
</PriorityBinding>
</GridViewColumn.DisplayMemberBinding>
</GridViewColumn>
GridViewColumn被标记为ContentProperty属性,内容属性是Header: [ContentProperty("Header")]
。所以没有GridViewColumn.
前缀的<GridViewColumn>
标签的内部内容应该分配给Header属性