ItemsSource が DataTable に設定されている DataGrid があります。DataTable には DateTime 型の列があり、特定のセルの日付が特定の値である場合に情報テキスト (つまり、「N/A」) を表示したいと考えています。
私の最初の考えは、どうにかしてセルの内容をそれ自体にバインドし、コンバーターを使用することでしたが、正しく動作させることができず、より良い方法があるようです。
さらに、DataGrid と DataTable の両方が動的に生成されるため、これはコード ビハインドで行う必要があります。
最初に試したコードは次のとおりです。
// Create a new DataGridCellStyle
Style myStyle = new Style();
myStyle.TargetType = typeof(DataGridCell);
// Create the binding
Binding myBinding = new Binding();
myBinding.RelativeSource = RelativeSource.Self;
myBinding.Converter = new DateTimeToStringConverter();
// Add the Content setter
Setter mySetter = new Setter();
mySetter.Property = ContentProperty;
mySetter.Value = myBinding;
myStyle.Setters.Add(setter);
// Set the Style and ItemsSource
myDataGrid.CellStyle = myStyle ;
myDataGrid.ItemsSource = myDataTable.DefaultView;
DateTimeToStringConverter は IValueConverter を実装していますが、DataGrid が表示されるときに DateTimeToStringConverter が実際に呼び出されることはないため、問題はバインディングのどこかにあると推測しています。