0

Web サービスからのオブジェクトのリストを表示する mvvm light ツールキットを使用する DXgrid があります。

オブジェクトのプロパティの 1 つは Color フィールドです。その色のセルに色を付けたい。

セル内に長方形をペイントしようとしましたが、うまくいきません

 <dxg:GridControl Grid.Row="1" AutoPopulateColumns="True" Height="412" Name="grdLicence" VerticalAlignment="Bottom"
                     ItemsSource="{Binding Model.Cars}" 
                     DesignTimeDataObjectType="{Binding Model.Cars}" Grid.RowSpan="2">

        <dxg:GridControl.Columns>

            <dxg:GridColumn FieldName="{Binding Path=Id}" DisplayMemberBinding="{Binding Path=Id}" Header="ID"/>
                            <dxg:GridColumn FieldName="{Binding Path=LicenseDate, StringFormat=\{0:dd/MM/yyyy\}}" DisplayMemberBinding="{Binding Path=LicenseDate, StringFormat=\{0:dd/MM/yyyy\}}" Header="Type" >
                <dxg:GridColumn.DisplayTemplate>
                    <ControlTemplate>
                        <Rectangle Height="20" Width="30">
                            <Rectangle.Fill>
                                <SolidColorBrush Color="{Binding Path=Colour}"></SolidColorBrush>
                            </Rectangle.Fill>

                        </Rectangle>

                    </ControlTemplate>
                </dxg:GridColumn.DisplayTemplate>
            </dxg:GridColumn>

            <dxg:GridColumn FieldName="{Binding Path=Province}" DisplayMemberBinding="{Binding Path=Province}" Header="Province" />


        </dxg:GridControl.Columns>

        <dxg:GridControl.View>
            <dxg:TableView Name="tableView1" AutoWidth="True" ShowSearchPanelMode="Always" SelectedRowsSource="{Binding Selection}" MultiSelectMode="Row" NavigationStyle="Row"   FocusedRow="{Binding SelectedItem, Mode=TwoWay}"  />


        </dxg:GridControl.View>
    </dxg:GridControl>

色をハードコードすると機能しますが、バインディングでは機能しません。プロパティ名は正しいですありがとう!


さらに進んで、代わりに cellpropperty を使用し、コンバーターを使用していますが、奇妙な理由でコンバーターが起動しません。ブレークポイントがありますが、決してヒットしません

     <UserControl.Resources>

    <views:ColourConverter x:Key="clrc"/>

    <Style x:Key="CellStyle" TargetType="{x:Type dxg:CellContentPresenter}">
        <Setter Property="Background" Value="{Binding Path=DataContext.Colour, Converter={StaticResource clrc}}" />
    </Style>
</UserControl.Resources>

//注意 Color はフィールド名です。

4

1 に答える 1

0

Colorプロパティをstringプロパティにバインドすると、機能しません。プログラムはそれを変換する方法を知らないので、 IValueConverterで彼に伝える必要があります:

public class StringToColorConverter:IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        System.Drawing.Color color = System.Drawing.Color.FromName(value.ToString());
        if (color != null)
            return new SolidColorBrush(System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B));

        return new SolidColorBrush(System.Windows.Media.Colors.Transparent);

    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value.ToString();
    }
}

それでも機能しない場合は、Convertメソッドにブレークポイントを設定し、入力されたかどうかを確認します。

于 2013-02-22T13:41:52.230 に答える