Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中按下时更改默认按钮_C#_.net_Wpf_Xaml - Fatal编程技术网

C# 在WPF中按下时更改默认按钮

C# 在WPF中按下时更改默认按钮,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我在WPF的包装面板中有两个按钮,其中一个按钮有IsDefault=“True”。当我点击另一个按钮时,我希望它成为“默认按钮” 我意识到我可以通过收听press事件以编程方式实现这一点,但我想要一个通用的解决方案,它不需要我到处连接大量代码。如果您想在更具声明性的会话中实现它,您可以在按钮的单击事件上定义WPFEventTrigger,并定义一个情节提要来更改受影响按钮的IsDefault属性 下面的示例演示了我的意思: <Window x:Class="TriggerSample.Ma

我在WPF的包装面板中有两个按钮,其中一个按钮有
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中是否有“按钮组”的概念,您可以将按钮包装在容器中,然后有代码侦听按钮组中任何按钮的单击,然后处理此问题?