1

セルに含まれる値に基づいてセルのテキストの色を変更したい 値コンバーターを使用しますが、どういうわけか、Convert 関数に渡されるオブジェクトのタイプは DataRowView であり、セルを強調表示したいので、セルを渡したいですその値に基づいて一度にセル。それが理にかなっていることを願っています。

ありがとう!!

DataGrid に適用するスタイルの場合のコード:

<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#の部分:

public class MyBkColorConverter : IValueConverter { #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
}
4

2 に答える 2

2

各コントロールに適用されるスタイルを作成すると、そのタイプに一致します。

DataGridTemplateColumn を使用して、必要に応じて実行できるカスタム テンプレートを作成するだけです。

  <DataGridTemplateColumn Header="Name">                       
      <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Foreground="{Binding Name,Converter={StaticResource colconverter}}" Text="{Binding Name}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
   </DataGridTemplateColumn>
于 2012-04-05T09:23:16.657 に答える
1

Pathで変換する必要があるプロパティにを渡すと機能しますBinding

<DataGridTextColumn Binding="{Binding Path=AgentUtilization, StringFormat=P}" Header="Agent Utilization">
    <DataGridTextColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="Foreground" Value="{Binding Path=AgentUtilization, Converter={StaticResource UtilizationFormat}}" />
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

コンバーターに渡される型は、バインディング パス内のプロパティの型です (もちろん、キャスト後)。

于 2012-04-05T09:38:46.580 に答える