0
我需要根據用戶與搜索功能的交互動態添加DataTrigger,因此無法在XAML中完成。但是,我想要做的基本目標可以從下面的XAML代碼中看到。它需要根據ToggleButton的IsChecked狀態更改按鈕的可見性。如何以編程方式添加DataTrigger
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;
對於我的生活,我一直無法弄清楚,爲什麼它不會工作。我錯過了什麼?
我很好奇,需要什麼類型的用戶互動激活觸發?我無法真正想到一個你不能使用DataTrigger的XAML的案例。 – Rachel
你也可以澄清你的意思是「不行」嗎?能見度不能切換嗎?我還不清楚'myToggleButton'和'myButton在你的代碼中,你是否手動將它添加到Visual Tree?這是你的完整代碼嗎? – Rachel
謝謝你的評論,Rachel。我不能使用XAML的原因,也許我只是不知道讓這些可用的東西,每次執行搜索時都有未知數的「父」切換按鈕。此外,每次搜索都會在這些按鈕上附加未知數量的「子」按鈕。除非有辦法動態地使用這些控件的搜索結果填充我的網格,否則我不能使用XAML來執行觸發。雖然,我承認我也可能在那裏錯過了一些東西。我對wpf還比較陌生。 – Meloviz