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を 2 つの異なるバインディングで 2 回再利用する方法はありますか?

4

1 に答える 1

1

Tagのプロパティを試して利用し、それらをおよびTextBoxesにバインドできます。スタイル定義では、バインディングはBlink プロパティの代わりに値をチェックします (おそらくandオプションを使用する必要があります)。BlinkForErrorBlinkForAnotherErrorTagRelativeSourceFindAncestor

しかし、正直なところ、エラー プロパティが 2 つしかない場合はTextBoxes、2 つの別々のスタイルを使用します。

于 2014-10-27T10:46:45.033 に答える