wpf WPF中带有Setter的EventTrigger?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3870214/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
EventTrigger with Setter in WPF?
提问by Andreas Zita
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.
我在 WPF 窗口中有一个普通的 Button 和 TextBox,我想要一个带有 EventTrigger 的 Button 模板,它监听 Button.Click 然后设置 TextBox 的布尔属性。没有代码隐藏。
Something like this:
像这样的东西:
<ControlTemplate.Triggers>
<EventTrigger SourceName="MyButton" RoutedEvent="Button.Click">
<Setter TargetName="MyTextBox" Property="Focusable" Value="False" />
</EventTrigger>
回答by Zamboni
Here is a sample that sets and clears Focusable
on a TextBox from an EventTrigger.
Hopefully you can adapt this example to your situation.
这是一个Focusable
从 EventTrigger设置和清除TextBox的示例。
希望您可以根据自己的情况调整此示例。
<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>