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