0

ヘッダー用に次のテンプレートがあります。

<telerik:RadExpander.Header>
    <StackPanel Orientation="Horizontal" DataContext="{Binding CurrentItem, ElementName=activityProductGrid}">
        <TextBlock Text="{Binding Strings[Product], Source={StaticResource LanguageResources}, StringFormat='{}{0}: '}" />
        <TextBlock Text="{Binding Product.Name}" FontWeight="Bold" />
        <TextBlock Text="{Binding Strings[GroupName], Source={StaticResource LanguageResources}, StringFormat=', {0}: '}" />
        <TextBlock Text="{Binding GroupName}" />
        <TextBlock Text="{Binding Strings[UnitPrice], Source={StaticResource LanguageResources}, StringFormat=', {0}: '}" />
        <TextBlock Text="{Binding UnitPrice}" />
    </StackPanel>
</telerik:RadExpander.Header>

たとえば、Product == null の場合、ヘッダーに何も表示しない場合、ヘッダーの条件付き書式設定を行うにはどうすればよいですか?

編集:これは機能します。

<StackPanel Orientation="Horizontal" DataContext="{Binding CurrentItem, ElementName=activityProductGrid}">
    <i:Interaction.Triggers>
        <ie:DataTrigger Binding="{Binding}" Value="{x:Null}">
            <ie:ChangePropertyAction TargetObject="{RelativeSource={RelativeSource AncestorType=StackPanel}}" PropertyName="Visibility">
                <ie:ChangePropertyAction.Value>
                    <Visibility>Collapsed</Visibility>
                </ie:ChangePropertyAction.Value>
            </ie:ChangePropertyAction>
        </ie:DataTrigger>
    </i:Interaction.Triggers>

    <-- from this point the came code as above -->
</StackPanel>
4

1 に答える 1

0

特に null の場合、置換値のバインディング パラメータ、またはバインディング エラーの場合に表示するパラメータを指定できます。

<TextBlock 
  Text="{Binding Product.Name, TargetNullValue=(empty), FallbackValue=(error)}"/>

( WPF Binding Cheatsheetから取得)

編集:特定のバインディングに異なる値を持たせるだけでなく、コントロール全体を表示しないようにしたいことに気付きました。このために、スタイルとトリガーを使用DataTriggerして、プロパティに a を追加し、 null の場合はProduct設定できます。Visibility

<telerik:RadExpander.Header>
    <StackPanel>
            <StackPanel.Style>
              <Style TargetType="StackPanel">
                <Style.Triggers>
                  <DataTrigger Binding="{Binding Product}" Value="{x:Null}">
                    <Setter Property="Visibility" Value="Collapsed"/>
                  </DataTrigger>
                </Style.Triggers>
              </Style>
            </StackPanel.Style>
        </StackPanel>
</telerik:RadExpander.Header>
于 2012-04-23T17:38:05.260 に答える