2

行のアイテムに検証エラーが含まれている場合、ContentPresenterのコンテンツを表示するために使用されるのDataGridTemplateColumnはデフォルトを表示することがわかりました。ErrorTemplateこれを防ぐ直接的な方法はわかりません。何か案は?

検証エラーテンプレートが表示されていないことを確認する最初の試みは次のとおりです。

<DataGridTemplateColumn Width="70" Header="Enabled" Validation.ErrorTemplate="{x:Null}" >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding Enabled.Value}"
                      HorizontalAlignment="Center"
                      VerticalAlignment="Center" Validation.ErrorTemplate="{x:Null}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellStyle>
        <Style >
            <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
        </Style>
    </DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>

例

Snoopを使用すると、セルにContentPresenter検証エラーを表示しているが含まれていることがわかります。

データグリッド内のすべてのコンテンツプレゼンターのエラーテンプレートを削除することによってのみ、これを無効にできることがわかりました。

<DataGrid.Resources>
    <Style TargetType="ContentPresenter">
        <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
    </Style>
</DataGrid.Resources>

シングルにのみ影響するこれへの方法はありDataGridTemplateColumnますか?

この投稿は似ているようです: DataGridCellValidation.ErrorTemplateは無視されました

4

1 に答える 1

4

私は解決策を見つけました。ContentPresenter内からを対象とするリソーススタイルを追加するとDataGridTemplateColumn.CellStyle、問題が解決します。

<DataGridTemplateColumn.CellStyle>
    <Style TargetType="{x:Type DataGridCell}">
        <Style.Resources>
            <Style TargetType="{x:Type ContentPresenter}">
                <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
            </Style>
        </Style.Resources>
    </Style>
</DataGridTemplateColumn.CellStyle>
于 2013-03-07T18:31:40.800 に答える