1

グリッド内の列に次のコードがあります。

<dxg:GridColumn.CellTemplate>
<DataTemplate>
    <StackPanel>
        <Rectangle Width="40" Height="10" Stroke="{ Binding Value, StringFormat='{}#{0}'}" StrokeThickness="5" />
    </StackPanel>
</DataTemplate>                                    
</dxg:GridColumn.CellTemplate>

列は、次のような 16 進値を持つプロパティにバインドされています。
- aaaaaa
- 123456

そのため、プロパティに基づいた色の四角形を表示したいと思います。

私が理解しているように、16 進値を次のように変更する必要があります。1) # 記号を含めます。2) アルファ チャネルを追加します。書式設定の「99」は、アルファ値で機能するかどうかをテストするためのものです-機能しません。

どうすればこれを機能させることができますか? ありがとう!

4

1 に答える 1

3

では、BindingプロパティStringFormatはタイプのプロパティでのみ機能しますStringMSDNが述べているように:

バインドされた値を文字列として表示する場合にバインディングをフォーマットする方法を指定する文字列。

問題を解決する最も簡単な方法は、IValueConverter. このコンバーターは入力値を受け取り、 を返しますSolidColorBrush

たとえば、16 進値が文字列の場合、コンバーターのConvertメソッドは次のようになります。

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    var str = (string)value;
    var r = Byte.Parse(str.Substring(0, 2), NumberStyles.HexNumber);
    var g = Byte.Parse(str.Substring(2, 2), NumberStyles.HexNumber);
    var b = Byte.Parse(str.Substring(4, 2), NumberStyles.HexNumber);

    return new SolidColorBrush(Color.FromRgb(r, g, b));
}
于 2013-08-14T15:20:42.137 に答える