C# 绑定到静态类属性和StringFormat
我可以将静态类属性绑定到MenuItem头,但无法确定如何包含StringFormat,以便在属性之外显示硬编码文本 这可能吗 当前:(显示“SQLSERVER1”) 所需:(显示“连接:SQLSERVER1”)C# 绑定到静态类属性和StringFormat,c#,wpf,xaml,user-interface,data-binding,C#,Wpf,Xaml,User Interface,Data Binding,我可以将静态类属性绑定到MenuItem头,但无法确定如何包含StringFormat,以便在属性之外显示硬编码文本 这可能吗 当前:(显示“SQLSERVER1”) 所需:(显示“连接:SQLSERVER1”) 当我在XAML中尝试“所需”行时,StringFormat被完全忽略。我做错了什么?MenuItem提供了一个应使用的HeaderStringFormat属性: <MenuItem Header="{Binding Source={x:Static Settings:Settin
当我在XAML中尝试“所需”行时,StringFormat被完全忽略。我做错了什么?
MenuItem
提供了一个应使用的HeaderStringFormat
属性:
<MenuItem Header="{Binding Source={x:Static Settings:Settings.CurrentServer}}"
HeaderStringFormat="Connection: {0}" />
实际上,该属性是HeaderedItemControl
的一部分,而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>
由于内容和标题的TargetType不是System.String,因此将忽略StringFormat。这些属性具有相应的*StringFormat属性以绕过该限制。从.NET 5开始,以下内容适用于我:
<Window Title="{Binding Source={x:Static vm:ApplicationSettings.ProductName}, StringFormat='{}{0} Document'}" />
不应该有任何引用,试着在StrugFramework周围删除<代码> <代码>引号。@无望没有改变。考虑逃逸<代码> { 0 } <代码>,如<代码> > 0 } /代码>或<代码> {}{ 0 } < /代码>无望,仍然没有变化。
<TextBlock Cursor="Help" Text="Hello World" >
<TextBlock.ToolTip>
<ContentControl Content="{Binding Path=SomeProperty, Source={x:Static local:SomeStaticClass}}" ContentStringFormat="Hello {0}" />
</TextBlock.ToolTip>
</TextBlock>
<Window Title="{Binding Source={x:Static vm:ApplicationSettings.ProductName}, StringFormat='{}{0} Document'}" />
public static string ProductName {get { ... ; } }