WPFのGridViewColumn
にDisplayMemberBinding
を設定しました。WPF:GridViewColumnのDisplayMemberBindingにPriorityBindingを使用する
<GridViewColumn Header="{x:Static resx:TextResources.ExcutionTimesHeaderErrorType}" DisplayMemberBinding="{Binding Exception, Mode=OneWay, Converter={StaticResource typeConverter}, FallbackValue='---'}"/>
typeConverter
は、GUIの文字列として例外の種類を示すために、Exception.GetType()
拡張子を「模倣します」。例外がなく、この値がnullの場合、この列に別のプロパティを出力します。今度はDisplayMemberBinding
についてはPriorityBinding
を使用しますが、GridViewColumn
は「サブ要素」としてPriorityBinding
を除いてありません。また、サブ要素としてDisplayMemberBinding
属性を使用することはできません。このようなGridViewColumn
ためPriorityBinding
を使用する方法があります:
<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>
EDIT
私は、以下の「ASH」の提案に私のコードを変更するには、それが動作しません:
Exception
プロパティがnullの場合、表示値は空です。 2番目のバインディングプロパティ "comment"が設定されているかどうかを確認しました。
これらの2つのバインディングが正しく動作:
に割り当てる必要があります。私はそれを想定どおりに実装しましたが、正しく動作しません。 "Exception-Binding"がnullの場合、2番目のバインディングと優先度のバインディングに対してfallbackValuesを定義しても、値は表示されません。私は上記の投稿を編集しました。 – rbr94
@RobinBreusch、Exceptionがnullでコンバータがnullまたは空の文字列を返した場合、PriorityBindingはそれを有効な値として受け入れ、Anotherpropertyバインディングを使用しません(info:https://msdn.microsoft.com/en-us)。 /library/system.windows.data.prioritybinding(v=vs.110).aspx#Anchor_6)。例外がnullの場合、Converterから 'DependencyProperty.UnsetValue'を返してみてください。 – ASh
これで問題は解決しました。どうもありがとうございました! – rbr94