0

アプリケーション内のすべてのコンボボックスにグローバル スタイルがあります。エラー検証のために、IDataErrorInfo を使用しています。したがって、エラーが発生した場合は、すべてのテキストボックスにそのようなカスタムビューを持たせたい: ここに画像の説明を入力異なる ErrorContent を使用します (エラー情報を含むツールチップを表示するには、マウスを円の上に置く必要があります)。私のコンボボックスのスタイルは次のとおりです。

<Style x:Key="AlStyleTextBoxArial12" TargetType="{x:Type TextBox}">
    <Setter Property="FontFamily" Value="Arial"/>
    <Setter Property="FontSize" Value="12pt"/>
    <Setter Property="Margin" Value="3,3,3,3"/>
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="True">
            <Setter Property="Validation.ErrorTemplate">
                <Setter.Value>
                    <ControlTemplate>
                        <DockPanel LastChildFill="True">
                            <Grid DockPanel.Dock="Right" Margin="-23,0,0,0" Width="15" Height="15">
                                <Grid.ToolTip>
                                   <ToolTip Content="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
                                </Grid.ToolTip>
                                <Ellipse Fill="Red" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
                                <TextBlock Text="!" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White" FontSize="11pt" FontWeight="Bold" Margin="0,0,0,1"/>
                            </Grid>
                            <Border BorderBrush="Red" BorderThickness="1">
                                <AdornedElementPlaceholder/>
                            </Border>
                        </DockPanel>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Trigger>
    </Style.Triggers>
</Style>

そして、私の TextBox は次のように実装されています:

 <TextBox Text="{Binding Snr, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
                                             Grid.Row="3" Grid.Column="2"/>

エラーが発生した場合の TextBox の表示は問題ありませんが、toolTip を設定できません。常に空です。ErrorContent を取得できない理由はありますか?

4

1 に答える 1

0

スタイルを次のように変更しました。

 <Style x:Key="AlStyleTextBoxArial12" TargetType="{x:Type TextBox}">
    <Setter Property="FontFamily" Value="Arial"/>
    <Setter Property="FontSize" Value="12pt"/>
    <Setter Property="Margin" Value="3,3,3,3"/>
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="True">
            <Setter Property="Validation.ErrorTemplate">
                <Setter.Value>
                    <ControlTemplate>
                        <DockPanel LastChildFill="True">
                            <Grid DockPanel.Dock="Right" Margin="-23,0,0,0" Width="15" Height="15">
                                <Grid.ToolTip>
                                    <ToolTip Content="{Binding [0].ErrorContent}"/>
                                </Grid.ToolTip>
                                <Ellipse Fill="Red" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
                                <TextBlock Text="!" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White" FontSize="11pt" FontWeight="Bold" Margin="0,0,0,1"/>
                            </Grid>
                            <Border BorderBrush="Red" BorderThickness="1">
                                <AdornedElementPlaceholder x:Name="customAdorner" ToolTip="{Binding [0].ErrorContent}"/>
                            </Border>
                        </DockPanel>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Trigger>
    </Style.Triggers>
</Style>

そしてそれは今働いています。

于 2015-05-19T13:26:42.353 に答える