0

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 が実際に呼び出されることはないため、問題はバインディングのどこかにあると推測しています。

4

1 に答える 1