0

基本スタイルとwpfのスタイルがあります。

基本スタイルは次のとおりです。

<Style x:Key="BaseTextBox" TargetType="{x:Type TextBox}">
    <Setter Property="Background" Value="#DDFFDD" />
    <Setter Property="MinWidth" Value="75" />
    <Setter Property="behaviors:OCCInteraction.Triggers" Value="{StaticResource ResourceKey=validationTrigger}" />
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="true">
            <Setter Property="Background" Value="#FFDDDD"/>
            <Setter Property="ToolTip" Value="{Binding Path=(Validation.Errors)[0].ErrorContent, RelativeSource={x:Static RelativeSource.Self}}" />
        </Trigger>
    </Style.Triggers>
</Style>

そして、特定のスタイルは次のとおりです。

<Style x:Key="EditableTextBox" TargetType="{x:Type TextBox}" BasedOn="{StaticResource ResourceKey=BaseTextBox}">
    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate>
                <StackPanel Orientation="Horizontal">
                    <Border BorderBrush="Red" BorderThickness="1" Padding="0" Margin="0">
                        <AdornedElementPlaceholder Margin="0"/>
                    </Border>
                    <TextBlock Text="test" />
                    <Image Style="{StaticResource ResourceKey=WarningImage}"/>
                    <TextBlock Text="{Binding Path=(Validation.Errors)[0].ErrorContent, RelativeSource={RelativeSource Mode=Self,AncestorLevel=2}}" />

                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

次に、検証エラーテキストを画像の横のテキストブロックに追加します。ただし、同じバインディングパスは機能しません。別のバインディングを試しましたが、基本スタイルのように同じバインディングにアクセスする方法がわかりません。

手伝ってくれてありがとう :)

4

2 に答える 2

0

AncestorLevelなしで試しましたか?あなたは同じオブジェクトでなければなりません。

于 2012-06-13T14:09:00.147 に答える
0

Mode=SelfおよびAncestorLevelプロパティは使用できません。を使用するだけMode=Selfです。

祖先レベルは、ビジュアルツリーでそのコントロールの親に到達しようとするときに使用されます。

于 2012-06-14T08:03:35.913 に答える