簡體   English   中英

綁定到靜態類屬性和 StringFormat

[英]Binding to Static class property and StringFormat

我能夠將靜態類屬性綁定到 MenuItem 標頭,但我無法確定如何包含 StringFormat 以便我可以顯示除該屬性之外的硬編碼文本。

這可能嗎?

當前:(顯示“SQLSERVER1”)

Header="{x:Static settings:Settings.CurrentServer}"

所需:(顯示“連接:SQLSERVER1”)

Header="{Binding Source={x:Static Settings:Settings.CurrentServer},StringFormat='Connection: {0}'}"

當我嘗試 XAML 中的“Desired”行時,StringFormat 被完全忽略。 我究竟做錯了什么?

MenuItem提供了一個您應該使用的HeaderStringFormat屬性:

<MenuItem Header="{Binding Source={x:Static Settings:Settings.CurrentServer}}"
          HeaderStringFormat="Connection: {0}" />

實際上,該屬性是HeaderedItemsControl一部分,而MenuItem恰好擴展了該屬性。

StringFormat屬性只是被忽略。

我遇到了類似的問題,並通過使用ContentControl解決了它,它是單獨的ContentStringFormat屬性:

<TextBlock Cursor="Help" Text="Hello World" >
    <TextBlock.ToolTip>
        <ContentControl Content="{Binding Path=SomeProperty, Source={x:Static local:SomeStaticClass}}" ContentStringFormat="Hello {0}" />
    </TextBlock.ToolTip>
</TextBlock>

從 .NET 5 開始,以下對我有用:

<Window Title="{Binding Source={x:Static vm:ApplicationSettings.ProductName}, StringFormat='{}{0} Document'}" />

其中ProductName定義為:

public static string ProductName {get { ... ; } }

對於 Content 和 Header,StringFormat 被忽略,因為它們的 TargetType 不是 System.String。 這些屬性具有相應的 *StringFormat 屬性來繞過該限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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