我有Style
:
<Style x:Key="BlinkStyle">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=BlinkForError, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type loc:DevicesRepositoryEditorUserControl}}}"
Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Name="BlinkBeginStoryboard">
<Storyboard>
<ColorAnimation To="Red" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
FillBehavior="Stop" Duration="0:0:0.4" RepeatBehavior="Forever" AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="BlinkBeginStoryboard" />
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
每当绑定的依赖项属性BlinkForError
设置为True
时,它就会开始闪烁。它很棒,如下:
<!-- When BlinkForError set to True, this TextBox, named "One", blinks: -->
<TextBox Name="One" Style="{StaticResource ResourceKey=BlinkStyle}"/>
事情是我想要完全相同的东西,但绑定到另一个依赖属性,比如AnotherBlinkForError
:
<!-- When AnotherBlinkForError set to True, this TextBox, named "Two", blinks: -->
<TextBox Name="Two" Style="{StaticResource ResourceKey=AnotherBlinkStyle}"/>
我可以复制整个样式,只更改DataTrigger
Binding
部分。
有没有办法避免这种重复,使用两个不同的绑定重复使用相同的Style
两次?
答案 0 :(得分:1)
您可以尝试使用Tag
上的TextBoxes
属性,并将其绑定到BlinkForError
和BlinkForAnotherError
。在您的样式定义中,绑定将检查Tag
值(您可能必须使用RelativeSource
和FindAncestor
选项)而不是Blink属性。
但说实话,如果只有两个TextBoxes
和各自的错误属性,我会选择两种不同的样式,因为它不那么麻烦。