我能够将静态类属性绑定到MenuItem标头,但我无法确定如何包含StringFormat,以便除了属性之外我还可以显示硬编码文本。
这可能吗?
目前:(显示“SQLSERVER1”)
Header="{x:Static settings:Settings.CurrentServer}"
所需:(显示“连接:SQLSERVER1”)
Header="{Binding Source={x:Static Settings:Settings.CurrentServer},StringFormat='Connection: {0}'}"
当我在XAML中尝试'Desired'行时,StringFormat将被完全忽略。我做错了什么?
答案 0 :(得分:3)
MenuItem
提供了您应该使用的HeaderStringFormat
属性:
<MenuItem Header="{Binding Source={x:Static Settings:Settings.CurrentServer}}"
HeaderStringFormat="Connection: {0}" />
实际上,该属性是HeaderedItemsControl
的一部分,MenuItem
恰好延伸。
StringFormat
属性被忽略。
答案 1 :(得分:1)
我遇到了类似的问题并利用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>
答案 2 :(得分:1)
从 .NET 5 开始,以下对我有用:
class FormAddProduct:
def _init_widgets(self):
...
self.mlb = MultiListbox(self.frame1, (
('Product Name', 3), ('Amount $', 1)), callback=self.do_something)
其中 <Window Title="{Binding Source={x:Static vm:ApplicationSettings.ProductName}, StringFormat='{}{0} Document'}" />
定义为:
ProductName
答案 3 :(得分:-1)
对于Content和Header,会忽略StringFormat,因为它们的TargetType不是System.String。这些属性具有相应的* StringFormat属性来绕过该限制。