gpt4 book ai didi

c# - 如何以编程方式添加 DataTrigger

转载 作者:行者123 更新时间:2023-12-05 08:09:37 27 4
gpt4 key购买 nike

我需要根据用户与搜索功能的交互动态添加 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>

关于c# - 如何以编程方式添加 DataTrigger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33904191/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com