连接绑定数据

时间:2013-08-14 15:02:24

标签: c# wpf data-binding

我在网格中有一列代码:

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

该列绑定到具有十六进制值的属性,例如:
- aaaaaa
- 123456

所以我想显示一个基于属性颜色的矩形。

据我所知,我需要将我的十六进制值修改为:1)包含#符号2)添加alpha通道。格式化中的'99'只是为了测试该东西是否适用于任何alpha值 - 它不会。

我怎么能让这个工作?谢谢!

1 个答案:

答案 0 :(得分:3)

Binding中,StringFormat属性仅适用于String类型的属性。正如MSDN所述:

  

一个字符串,指定在显示绑定时如何格式化绑定   绑定值为字符串。

解决问题的最简单方法是编写IValueConverter。此转换器将获取您的输入值并返回SolidColorBrush

例如,如果您的十六进制值是字符串,则转换器的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));
}