我有以下代码:
<TextBlock Grid.Row="0" Grid.Column="2" FontWeight="Bold" FontSize="13" Name="PART_FRBold">
<TextBlock.Text>
<MultiBinding StringFormat="This person is: {}{0}; {1}, {2}">
<Binding Path="PersonID"/>
<Binding Path="LastName"/>
<Binding Path="FirstName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
我可以在ViewModel中看到TheSID,LastName和FirstName都存在。但是实际上没有任何内容归功于页面。我唯一能想到的是StringFormat不正确。
Mikael Koskinen的答案正确地指出,格式字符串存在问题(信用额到期信用)。
问题不是格式字符串中的" 此人:",而是错位的{}
逃生序列。因此,尽管Mikael建议的解决方案/解决方法有效,但也有些复杂。为了使格式字符串正常工作,只需要将逃生序列{}
放置在格式字符串的开始时:
StringFormat="{}This person is: {0}; {1}, {2}"
更新3.3:
实际问题是语法错误。有关正确的语法
用于将来的参考:您可以在StringFormat中使用"静态"零件,您只需使用{}}启动StringFormat。
解决方法的原始错误答案:
问题是您无法在StringFormat属性中添加"此人"。如果删除该部分:
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}; {1}, {2}">
<Binding Path="PersonID"/>
<Binding Path="LastName"/>
<Binding Path="FirstName"/>
</MultiBinding>
</TextBlock.Text>
您可以看到实际的绑定有效。
您可以通过为文本的"静态"部分使用静态资源来解决此问题并与之绑定:
<TextBlock.Resources>
<system:String x:Key="MyString">This person is</system:String>
</TextBlock.Resources>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1}; {2}, {3}">
<Binding Source="{StaticResource MyString}" />
<Binding Path="PersonID"/>
<Binding Path="LastName"/>
<Binding Path="FirstName"/>
</MultiBinding>
</TextBlock.Text>