簡體   English   中英

如何使用StringFormat在XAML中格式化System.Windows.Media.Color

[英]How to format a System.Windows.Media.Color in XAML using StringFormat

我需要以格式為十六進制#rrggbbTextBlock呈現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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM