WPF中带有Setter的EventTrigger? [英] EventTrigger with Setter in WPF?

查看:18
本文介绍了WPF中带有Setter的EventTrigger?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 WPF 窗口中有一个普通的 Button 和 TextBox,我想要一个带有 EventTrigger 的 Button 模板,它监听 Button.Click 然后设置 TextBox 的布尔属性.没有代码隐藏.

I have a normal Button and TextBox in a WPF-Window and I want a Template for the Button with a EventTrigger that listens to Button.Click and then sets a boolean-property of the TextBox. No code-behind.

像这样:

<ControlTemplate.Triggers>
  <EventTrigger SourceName="MyButton" RoutedEvent="Button.Click">
    <Setter TargetName="MyTextBox" Property="Focusable" Value="False" />
  </EventTrigger>

推荐答案

这里是一个示例,它设置和清除 EventTrigger 的 TextBox 上的 Focusable.
希望您可以根据自己的情况调整此示例.

Here is a sample that sets and clears Focusable on a TextBox from an EventTrigger.
Hopefully you can adapt this example to your situation.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <TextBox 
        x:Name="tb"
        Grid.Row="0"
        Text="Here is some sample text">
    </TextBox>
    <Button 
        x:Name="btnFocusTrue"
        Grid.Row="1"
        Content="Set True">
    </Button>
    <Button 
        x:Name="btnFocusFalse"
        Grid.Row="2"
        Content="Set False">
    </Button>
    <Grid.Triggers>
        <EventTrigger RoutedEvent="Button.Click" SourceName="btnFocusTrue">
            <BeginStoryboard Name="FocusTrueStoryboard">
                <Storyboard >
                    <BooleanAnimationUsingKeyFrames
                        Storyboard.TargetName="tb"
                        Storyboard.TargetProperty="(TextBox.Focusable)">
                        <DiscreteBooleanKeyFrame
                            KeyTime="00:00:01"
                            Value="True" />
                    </BooleanAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
        <EventTrigger RoutedEvent="Button.Click" SourceName="btnFocusFalse">
            <BeginStoryboard Name="FoucsFalseStoryboard">
                <Storyboard >
                    <BooleanAnimationUsingKeyFrames
                        Storyboard.TargetName="tb"
                        Storyboard.TargetProperty="(TextBox.Focusable)">
                        <DiscreteBooleanKeyFrame
                            KeyTime="00:00:01"
                            Value="False" />
                    </BooleanAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Grid.Triggers>
</Grid>

这篇关于WPF中带有Setter的EventTrigger?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆