更改默認按鈕我在WPF的包裝面板中有兩個按鈕,其中一個有IsDefault="True"
。當我點擊另一個時,我希望它成爲「默認按鈕」。WPF
我意識到我可以通過聽新聞事件來編程,但我想要一個通用的解決方案,不需要我在這裏和那裏連接大量的代碼。
更改默認按鈕我在WPF的包裝面板中有兩個按鈕,其中一個有IsDefault="True"
。當我點擊另一個時,我希望它成爲「默認按鈕」。WPF
我意識到我可以通過聽新聞事件來編程,但我想要一個通用的解決方案,不需要我在這裏和那裏連接大量的代碼。
如果要在更多聲明性會話中實現它,可以在Button的Clicked事件上定義WPF EventTrigger
,並定義一個Storyboard來更改受影響按鈕的IsDefault
屬性。
下面是示例演示了我的意思:
<Window x:Class="TriggerSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<Button x:Name="one" Content="One">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<BeginStoryboard>
<Storyboard >
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="(Button.IsEnabled)">
<DiscreteBooleanKeyFrame Value="False" />
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button Content="Two" />
</StackPanel>
</Window>
它改變了IsEnabled屬性,所以你可以測試它的工作原理。然後,您可以將其更改爲IsDefault屬性(顯然會得到True值)
您可以創建InvertBooleanConverter
並將第一個按鈕的IsDefault
屬性綁定到第二個按鈕上的反轉,然後您只需設置IsDefault
使用第一個按鈕上的觸發器關閉,第二個按鈕會自動切換到開啓!
<Button x:Name="B1" IsDefault="True"/>
<Button x:Name="B2" IsDefault="{Binding ElementName=B1, IsDefault, Converter={StaticResource InvertBooleanConverter}}"/>
如果使用「賈恩·克拉託赫維爾」風格,從他與我綁定的回答觸發這應該很容易在全XAML。
我看到的方式是,這裏的想法是將'IsEnabled'設置爲'false',以便點擊任何按鈕? WPF中沒有任何「按鈕組」的概念,你可以將按鈕包裝在一個容器中,然後有代碼監聽按鈕組內任何按鈕的單擊,然後處理這些? – Tower 2012-07-21 16:21:24