2012-03-15 10 views
4

を無視し、ここでのXAMLコードは次のとおりです。DataGridCell Validation.ErrorTemplate私はDataGridCellsのValidation.ErrorTemplateを設定しようとしている

<Style x:Key="{x:Type DataGridCell}" x:Uid="dataGridCellErrorTemplate" TargetType="{x:Type DataGridCell}"> 
    <Setter Property="Validation.ErrorTemplate"> 
     <Setter.Value> 
      <ControlTemplate > 
       <Border BorderBrush="Green" BorderThickness="2" ToolTip="Heidenei"></Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <!-- following line only for demonstration that the setter is working ... --> 
    <Setter Property="Background" Value="Aquamarine"></Setter>    
</Style> 

datagridcellsの背景が正常に任意の検証結果から、緑(独立したが着色されている間、 )使用されているValidation.ErrorTemplateは依然としてデフォルトのもの、つまり赤い枠線です。

私はここで同様の問題があったことを知っています。 Styling DataGridCell Error Template しかし、彼らは私の問題を本当に解決しません。

すべてのヘルプは、私は同じ問題を経験してると信じ

フランク

+0

(http://msdn.microsoft.com/en-us/library/ ee622975.aspx)。 (DispatcherTimer') –

+0

あなたのフィードバックをありがとうが、私はそれを理解しているか分からない。私のシナリオでは、データグリッドセルはユーザーによって編集されないため(編集コントロールはありません)、バックグラウンドプロセスによって編集されます。私はIDataErrorInfoを使って、問題のある値を持つフィールドを強調したいと思っています。 – FrankE

+0

彼らが「コントロールの編集」と言うとき、私は「各DataGridCellに埋め込まれたコントロール」を意味すると思います。つまり、テンプレートがセルに適用される可能性がありますが、内部コントロールが作成されると上書きされます。そのため、行が作成されたときにキャプチャして、各セルをループして独自の値を設定する必要があります。 –

答えて

4

認識されます。

DataGridTemplateColumnを使用する場合、内容はContentPresenterと表示されます。このコンテンツプレゼンターは、デフォルトのエラーテンプレートを使用します。

このテンプレートを個別のDataGridTemplateColumnに対して直接削除する方法はありませんが、DataGridのリソースにスタイルを追加することで、DataGridのすべてのコンテンツプレゼンターに対してこのテンプレートを削除できます。

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

あなたの答えを早く見つけました...すべての午前中にこれを理解しようとしました。独自のカスタム検証テンプレートを使用して複数のDataGridTemplateColumnを使用しています。セルの周りのデフォルトの赤い枠線を削除する必要がありました。これはトリックでした。 – RogerN

+0

ありがとう、解決策を見つけるのは簡単ではありません! –

0

私は、次のTextBlockスタイルを使用することによって刺激性の赤い枠を削除する運を持っていました。 [シンプルなコントロールと編集コントロールが実行時に作成されるため、あなたはあなたのようValidation.ErrorTemplate添付プロパティを使用することはできませんでしょう]

<Style TargetType="TextBlock"> 
    <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/> 
</Style> 
関連する問題