2017-01-27 22 views
1

私はWPFの新機能ですが、最後のカップルでMVVを多用しています。 WPFは、(Xceed WPF ToolkitのNumericUpDownコントロールを使用して)カスタム列テンプレートを持つDataGridを表示します。 3つの列には、3Dベクトルの10進数の座標が含まれています。 IDataErrorInfoを使用して、ベクトルの長さが決して0でないことを確認します(3つの列はすべて同時に0になることはできません)。これまでのところうまくいきました。検証に失敗するとセルは赤くマークされますが、ツールチップなどにエラーメッセージを表示することもできます。WPF:IDataErrorInfoのときにカスタムDataGridセルにツールチップのメッセージを表示

<DataGrid [...]> 
    <DataGrid.Columns> 
     [...] 
     <DataGridTemplateColumn Header="X" [...]> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <xctk:DecimalUpDown Value="{Binding PositionX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}"> 
        </xctk:DecimalUpDown> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
     [... and same thing for Y and Z] 
    </DataGrid.Columns> 
</DataGrid> 

私は今、数時間のためにこだわっているところですので、私はあなたが私をここに役立つことを願っ:私はカスタムテンプレート列にエラーツールチップを表示するにはどうすればよい

エラーツールチップで多くの記事やスレッドを読んだことがありますが、それらのほとんどはプレーンテキストボックスやDataGridTextColumnsにあり、多くは試してみましたが、これまで動作させることはできませんでした。ここから

<Style x:Key="errorStyle" TargetType="{x:Type TextBox}"> 
    <Setter Property="Padding" Value="-2"/> 
    <Style.Triggers> 
     <Trigger Property="Validation.HasError" Value="True"> 
      <Setter Property="Background" Value="Red"/> 
      <Setter Property="ToolTip" 
       Value="{Binding RelativeSource={RelativeSource Self}, 
       Path=(Validation.Errors)[0].ErrorContent}"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

それらのほとんどは、次のようになり https://msdn.microsoft.com/library/ee622975%28v=vs.100%29.aspx

以上exsamples:

何事も私に任意のツールチップを示しませんでした。

あなたは、私にこのスタイルのトリガ定義が定義が

  • と場合でなければなら
  • 、何のテキストボックスを含まない細胞を探すために持っているか

    • をヒントを与えることができます列は何らかの形でこの定義を参照する必要がありますか?

    ありがとうございます!添付Validation.HasErrorプロパティがtrueを返す場合CellTemplateにコントロールのToolTipプロパティを設定し、トリガーとスタイルへのコントロールのスタイルプロパティを設定し

  • 答えて

    2

    <DataGridTemplateColumn Header="X"> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <xctk:DecimalUpDown Value="{Binding PositionX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}"> 
           <xctk:DecimalUpDown.Style> 
            <Style TargetType="xctk:DecimalUpDown"> 
             <Style.Triggers> 
              <Trigger Property="Validation.HasError" Value="True"> 
               <Setter Property="ToolTip" Value="{Binding (Validation.Errors)[0].ErrorContent, RelativeSource={RelativeSource Self}}" /> 
              </Trigger> 
             </Style.Triggers> 
            </Style> 
           </xctk:DecimalUpDown.Style> 
          </xctk:DecimalUpDown> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 
    
    +1

    ありがとうございましたが、完璧に動作します!私は近くにいることは分かっていましたが、スタイルなどの経験はありませんでした... – John

    関連する問題