2015-10-08 139 views
3

我能够将静态类属性绑定到MenuItem头,但我无法确定如何包含StringFormat,以便除了属性外还可以显示硬编码文本。绑定到静态类属性和StringFormat

这可能吗?

目前:(显示 “SQLSERVER1”)

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

期望:(显示 “连接:SQLSERVER1”)

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

当我尝试在XAML '所需的' 线的StringFormat是完全忽略。我究竟做错了什么?

+0

不应有任何引号,请尝试删除StringFormat值附近的引号。 – Hopeless

+0

@Hopeless没有变化。 –

+0

考虑转义诸如“\ {0 \}”或“{} {0}”的'{0}' – Hopeless

回答

3

MenuItem规定,你应该使用HeaderStringFormat属性:

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

其实,这财产的HeaderedItemsControl部分,它MenuItem发生延长。

StringFormat属性被忽略。

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> 
-1

的StringFormat被忽略的内容和标题,因为他们的TargetType不是System.String。那些属性具有对应的* StringFormat属性来解决这个限制。