2014-10-27 23 views
1

我有這個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}"/> 

我可以複製的整體風格和只更改DataTriggerBinding部分。

有沒有辦法避免這種重複,兩次使用兩次不同的綁定重複使用相同的Style

回答

1

您可以嘗試使用TextBoxes上的Tag屬性,並將它們綁定到BlinkForErrorBlinkForAnotherError。在您的樣式定義中,綁定將檢查Tag值(您可能必須使用RelativeSourceFindAncestor選項),而不是Blink屬性。

但說實話,如果只有兩個TextBoxes和相應的錯誤屬性,我會用兩個不同的樣式去做,因爲它只是少了一點麻煩。

+1

'? – Jerrington 2014-10-27 11:26:11

相關問題