[英]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.