[英]How to format a System.Windows.Media.Color in XAML using StringFormat
我需要以格式為十六進制#rrggbb
的TextBlock
呈現System.Windows.Media.Color
。 綁定像
<TextBlock Text="{Binding Color}"/>
產生格式為#aarrggbb
的字符串。 我知道我可以創建自己的轉換器以獲取所需的格式,但是我不喜歡這種工作。 我想知道是否沒有其他更簡單的方法。
我知道,定義DateTime
格式很容易完成
StringFormat={}{0:HH:mm}
類似於我嘗試過的解決方案
StringFormat={}{0:#rrggbb}
但結果是
sc#1rrggbb,rrggbb,1rrggbb,1rrggbb
有沒有一種使用StringFormat
格式化顏色的方法? 如果是,Corret語法是什么?
純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>
最后,經過大量搜索之后,我認為無法像DateTime
一樣簡單地設置Color
格式。 我的解決方案需要多幾行,但基本上是相同的。 使用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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.