2016-08-16 11 views
1
<DataGridCheckBoxColumn Binding="{Binding Value, ValidatesOnDataErrors=True}" 
    Validation.ErrorTemplate="{x:Null}"/> 

セルから赤いボックスを削除しようとしています。これでerrortemplate = nullは何も変更しません。DataGridCheckBoxColumnのエラーテンプレートAdornerをオーバーライドできません

<Style TargetType="{x:Type DataGridCheckBoxColumn}" > 
    <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/> 
</Style> 

これも何もしません。私はDataGridCell、DataGridRow、ContentTemplate、Checkboxスタイルを試しました。セルから醜い赤い箱を取り除くものはありません。

私はそれを詮索し、アドナーが無名でテンプレート化されて自動的に作成されていることを発見しました。それはチェックボックスに添付されています。

唯一の方法は、DataGridTemplateColumnに変更し、データテンプレートで直接チェックボックスを作成することです。しかし、これはラウンドアバウトで、私がやった多くの他のスタイルテンプレートが取り消されます。チェックボックスのようなテンプレート列を作成する方法はありますか?その周囲に赤いエラー確認の境界線が表示されませんか?

ここで重要な点は、エラーの検証が必要なことです。私はそれが作るadornerをほしくない。

+0

CheckBoxスタイルをリソースとして列に追加し、チェックボックスのValidationErrorTemplateをnullに設定しようとしましたか? – lokusking

+0

はい。 OPでDataGridCell、DataGridRow、ContentTemplate、Checkboxと同じスタイルのTargetType。影響を与えるものはありません。 – user99999991

答えて

1

可能な解決策は、このようにElementStyleをスタイリングすることです。

<DataGrid ItemsSource="{Binding Datas}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridCheckBoxColumn Binding="{Binding Invalid, ValidatesOnDataErrors=True}" Header="Invalid" > 
       <DataGridCheckBoxColumn.ElementStyle> 
        <Style TargetType="{x:Type CheckBox}"> 
         <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"></Setter> 
        </Style> 
       </DataGridCheckBoxColumn.ElementStyle> 
      </DataGridCheckBoxColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

:あなたのDataGrid

RowValidationErrorTemplate="{x:Null}" 

左側に赤いexclamationmarkを取り除くためには、これを行います。

+0

これはうまくいきますが、BasedOnを使用してもチェックボックスの列のすべてのスタイリングが失われます。私は、readonly datagridcheckboxcolumsnのスタイルと、datagridcheckboxcolumnのisreadonlyがfalseのスタイルを持っています。 IsReadOnlyが真か偽であるかどうかに応じてスタティックリソースにスタイルを切り替えるために、私はスマートでdatagridcolumnのdatatriggerを実行できますが、失敗すると考えました。私はこれがより簡単だったと思う。 – user99999991

関連する問題