我在这里有两个问题:
1
让我们看看下面的xaml:
<Style TargetType="TextBlock">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseDown">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="Background.Color" To="LightBlue" Duration="0:0:0.100" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
<TextBlock Text="123" />
<TextBlock Text="abc" />
上述代码的当前行为:
单击text = 123的文本块时,其背景将更改为LightBlue。 现在如果我用text = abc点击文本块,它的背景将变为LightBlue。但是text = 123的textblock的背景仍然是LightBlue。
要求:
当我点击带有text = abc的textBlock时,我想用text = 123将textblock的背景更改为Transparent。
我应该对上面的xaml进行哪些更改才能获得所需的功能?
2
如何为多个元素设置相同Style的TargetType。
让我们说,
我也想使用上面代码中提到的TextBox样式,然后如何在不重复代码的情况下使用它而不使用x:Key属性?
答案 0 :(得分:2)
对于第一个问题:我认为通过使用事件GotFocus可以轻松实现代码隐藏,这是当您通过键盘,鼠标单击文本框时触发的事件等...
对于第二个问题:您可以通过将TargetType设置为其父类来设置多个不同控件的目标类型,例如TargetType="{x:Type Control}"
有关详细信息(几乎相同的情况),请检查:
答案 1 :(得分:1)
虽然Nirvana Priest回答了第二个问题。第一个问题的答案是为LostFocus写相同的触发器,如
<Style TargetType="TextBlock">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseDown">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="Background.Color" To="LightBlue" Duration="0:0:0.100" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="LostFocus">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="Background.Color" To="White" Duration="0:0:0.100" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
我希望这会有所帮助。