C# 在WPF中按下时更改默认按钮
我在WPF的包装面板中有两个按钮,其中一个按钮有C# 在WPF中按下时更改默认按钮,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我在WPF的包装面板中有两个按钮,其中一个按钮有IsDefault=“True”。当我点击另一个按钮时,我希望它成为“默认按钮” 我意识到我可以通过收听press事件以编程方式实现这一点,但我想要一个通用的解决方案,它不需要我到处连接大量代码。如果您想在更具声明性的会话中实现它,您可以在按钮的单击事件上定义WPFEventTrigger,并定义一个情节提要来更改受影响按钮的IsDefault属性 下面的示例演示了我的意思: <Window x:Class="TriggerSample.Ma
IsDefault=“True”
。当我点击另一个按钮时,我希望它成为“默认按钮”
我意识到我可以通过收听press事件以编程方式实现这一点,但我想要一个通用的解决方案,它不需要我到处连接大量代码。如果您想在更具声明性的会话中实现它,您可以在按钮的单击事件上定义WPF
EventTrigger
,并定义一个情节提要来更改受影响按钮的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)如果您想在更具声明性的会话中实现它,您可以在按钮的单击事件上定义一个WPF
EventTrigger
,并定义一个脚本来更改受影响按钮的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
设置为off,第二个按钮将自动切换为on
如果您将他的答案中的“Jan Kratochvil”样式触发器与我的绑定一起使用,这在完整的XAML中应该很容易工作。您可以创建一个
InvertBooleanConverter
,并将第一个按钮的IsDefault
属性绑定到第二个按钮的反向,然后您只需使用第一个按钮上的触发器将IsDefault
设置为off,第二个按钮将自动切换为on
如果您将他的答案中的“Jan Kratochvil”样式触发器与我的绑定一起使用,那么在完整的XAML中应该很容易操作。恐怕不行!因为布尔值只有两个状态;)恐怕不行!因为布尔值只有两个状态;)依我看,这里的想法是对任何单击的按钮将
IsEnabled
设置为false
?WPF中没有“按钮组”的概念,你可以将按钮包装在一个容器中,然后有代码监听按钮组中任何按钮的点击,然后处理这个问题吗?依我看,这里的想法是让点击的任何按钮的IsEnabled
到false
?WPF中是否有“按钮组”的概念,您可以将按钮包装在容器中,然后有代码侦听按钮组中任何按钮的单击,然后处理此问题?