23

バインドされた文字列に基づいて、DataTrigger がスタックパネルの可視性を変更するにはどうすればよいですか? 私は次のXamlを持っています

<StackPanel HorizontalAlignment="Right" 
            Orientation="Horizontal" 
            Grid.Column="1"
            Background="#FF7a7a7a">
    <StackPanel.Style>
        <Style TargetType="{x:Type StackPanel}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SearchText}" Value="">
                    <Setter Property="Visibility" Value="Hidden"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </StackPanel.Style>
    Content....
   </StackPanel>

私はそれSearchTextが更新を取得し、外部で適切にバインドすることを知っていますStackPanel

誰かが私を正しい方向に向けることができますか?

4

4 に答える 4

40

これ:

<DataTrigger Binding="{Binding SearchText}" Value="">
   <Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>

空の文字列 ( "") では機能しますが、 では機能しませんnull

DataTriggernull ケース用に別のものを追加します。

<DataTrigger Binding="{Binding SearchText}" Value="{x:Null}">
   <Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
于 2013-10-07T22:55:21.477 に答える
12

XAML で String.Empty を使用して修正します。

xmlns:sys="clr-namespace:System;assembly=mscorlib"
...
<DataTrigger Binding="{Binding SearchText}" Value="{x:Static sys:String.Empty}">
于 2016-02-26T10:00:06.387 に答える
0

奇妙に聞こえるかもしれませんが、以下のコードが機能します。

<StackPanel Background="#FF7a7a7a">
    <StackPanel.Style>
        <Style TargetType="{x:Type StackPanel}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Text, ElementName=textBlock}" Value="">
                    <Setter Property="Visibility" Value="Hidden"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </StackPanel.Style>
    <TextBox x:Name="textBlock" Text="" Width="100" Height="30"></TextBox>
</StackPanel> 

プロパティが送信している価値がわかりますか?

于 2013-10-07T23:01:27.297 に答える
0

これを試して

<StackPanel.Style>
                                        <Style TargetType="StackPanel">
                                            <Setter Property="Visibility" Value="Collapsed"/>
                                            <Style.Triggers>
                                                <DataTrigger Binding="{Binding YourBoundPropertyName}" Value="True">
                                                    <Setter Property="Visibility" Value="Visible"/>

                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </StackPanel.Style>
于 2013-10-07T23:08:47.330 に答える