2016-08-31 5 views
0

WPFのGridViewColumnDisplayMemberBindingを設定しました。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つのバインディングが正しく動作:

答えて

1

あなたが<GridViewColumn.DisplayMemberBinding>タグが不足している:[ContentProperty("Header")]

<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属性とcontentプロパティでマークされているがヘッダーです。したがってGridViewColumn.プレフィックスなしの<GridViewColumn>タグの内部コンテンツは、ヘッダープロパティ

+0

に割り当てる必要があります。私はそれを想定どおりに実装しましたが、正しく動作しません。 "Exception-Binding"がnullの場合、2番目のバインディングと優先度のバインディングに対してfallbackValuesを定義しても、値は表示されません。私は上記の投稿を編集しました。 – rbr94

+1

@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

+0

これで問題は解決しました。どうもありがとうございました! – rbr94

関連する問題