我需要在格式为十六进制System.Windows.Media.Color
的{{1}}中显示TextBlock
。绑定像
#rrggbb
会生成格式为<TextBlock Text="{Binding Color}"/>
的字符串。我知道我可以创建自己的转换器来获得所需的格式,但我不喜欢这种努力。我想知道是否没有其他更简单的方法。
我知道,定义#aarrggbb
的格式可以像
DateTime
与此解决方案类似,我尝试了
StringFormat={}{0:HH:mm}
但结果是
sc#1rrggbb,rrggbb,1rrggbb,1rrggbb
有没有办法使用StringFormat={}{0:#rrggbb}
格式化颜色?如果是,最新的语法是什么?
答案 0 :(得分:0)
Pure xaml解决方案。请注意,Run
标记应该在一行中,或者在rgb值之间得到空格。
<TextBlock DataContext="{Binding Color}" Text="#">
<Run Text="{Binding R, StringFormat={}{0:X}}"/><Run Text="{Binding G, StringFormat={}{0:X}}"/><Run Text="{Binding B, StringFormat={}{0:X}}"/>
</TextBlock>
答案 1 :(得分:0)
最后,经过大量搜索后,我认为无法将Color
格式化为DateTime
这么简单。我的解决方案需要更多行,但基本上它是相同的。使用MultiBinding
可以将格式化的颜色值放在一起,如:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="#{0:X2}{1:X2}{2:X2}">
<Binding Path="Color.R"/>
<Binding Path="Color.G"/>
<Binding Path="Color.B"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>