セルに含まれる値に基づいてセルのテキストの色を変更したい 私は値コンバータを使用しますが、何らかの形でConvert関数に渡されるオブジェクトの型はDataRowViewです。私はその値に基づいて一度に1つのセルを強調表示したいので、Cellを渡したいと思います。希望は意味をなさない。wpfデータグリッド内のセル値に基づいて
ありがとうございます!
コードであれば、私は、データグリッドに適用されるスタイル:
<UserControl.Resources>
<local:MyBkColorConverter x:Key="bkColorCvrt"/>
<Style x:Key="GridStyle" TargetType="DataGrid">
<Setter Property="ItemsSource" Value="{Binding}" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="RowBackground" Value="Transparent" />
<Setter Property="HeadersVisibility" Value="None" />
<Setter Property="GridLinesVisibility" Value="None" />
<Setter Property="SelectionUnit" Value="Cell" />
<Setter Property="SelectionMode" Value="Single" />
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled" />
<Setter Property="CellStyle">
<Setter.Value>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground">
<Setter.Value>
<Binding Converter="{StaticResource bkColorCvrt}"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Black">
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
とC#の一部:
パブリッククラスMyBkColorConverter: { #region IValueConverterメンバー
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//The type of value here is actually DataRowView
//here i would like to have a cell passed. is that possible to archive?
return Brushes.LightGray;
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
IValueConverter
グリッドがDataTableにバインドされているため、自分で列を定義しません。このコードはどこに貼り付けますか? – Anya
あなたのソース行にどの列が来るのか分かっていれば、上記と同じようにバインドできます。たとえば、従業員のデータテーブルがあり、Nameが列の場合は、上記のとおりです。 – JSJ