2013-08-14 2 views
1

I 갖는 격자 열의 코드 조각 다음
- AAAAAA
- 123456여러개 쓰기 바인딩 데이터

:

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

열은 예컨대 16 진수 값을 갖는 속성에 바인딩

그래서 속성에 따라 색상이있는 직사각형을 표시하려고합니다.

나는 16 진수 값을 다음과 같이 수정해야합니다. 1) # 기호 포함 2) 알파 채널 추가. 포맷팅의 '99'는 알파 값으로 작동하는지 테스트하는 것입니다.

어떻게 작동합니까? 감사!

답변

3

Binding에서 StringFormat 속성은 String 속성에만 적용됩니다. 이 문자열로 바인딩 값을 표시하는 경우 바인딩을 포맷하는 방법을 지정

문자열 : MSDN 상태로.

가장 쉬운 방법은 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)); 
}