繁体   English   中英

如何以编程方式添加 DataTrigger

[英]How to add a DataTrigger programmatically

我需要根据用户与搜索功能的交互动态添加 DataTrigger,因此无法在 XAML 中完成。 但是,从下面的 XAML 代码中可以看出我正在尝试做的事情的基本目标。 它需要根据 ToggleButton 的 IsChecked 状态更改按钮的可见性。

XAML:

<ToggleButton Name="myToggleButton" />

<Button Name="myButton">
    <Style TargetType="Button">
        <Style.Triggers>
            <DataTrigger Binding="{Binding ElementName=myToggleButton, Path=IsChecked}"
                         Value="True">
                <Setter Property="Visibility" Value="Collapsed" />
            </DataTrigger>
            <DataTrigger Binding="{Binding ElementName=myToggleButton, Path=IsChecked}"
                         Value="False">
                <Setter Property="Visibility" Value="Collapsed" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Button>

这就是我在 C# 中尝试生成与上述 XAML 相同的功能的内容。

C#:

ToggleButton myToggleButton = new ToggleButton();
Button myButton = new Button();
Style style = new Style( typeof( Button ) );
DataTrigger tbChecked = new DataTrigger() 
{ 
    Binding = new Binding( "IsChecked" ) { Source = myToggleButton },
    Value = true
},
            tbNotChecked = new DataTrigger() 
{ 
    Binding = new Binding( "IsChecked" ) { Source = myToggleButton },
    Value = false
};
tbChecked.Setters.Add( new Setter( Button.VisibilityProperty, Visibility.Visible ) );
tbNotChecked .Setters.Add( new Setter( Button.VisibilityProperty, Visibility.Collapsed ) );
style.Triggers.Add( tbChecked );
style.Triggers.Add( tbNotChecked );
myButton.Style = style;

对于我的一生,我一直无法弄清楚为什么它不起作用。 我错过了什么?

也许,你可以试试这个:

<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
    <StackPanel.Resources>
        <BooleanToVisibilityConverter x:Key="b2v"/>
    </StackPanel.Resources>

    <CheckBox x:Name="switchCheckBox" Content="Show/Hide" VerticalAlignment="Center"/>
    <TextBlock Text=" "/>
    <Button Content="Test Button" Visibility="{Binding ElementName=switchCheckBox, Path=IsChecked, Converter={StaticResource b2v}}" Padding="25,5"/>

</StackPanel>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM