使用 StringFormat 进行多重绑定的多重绑定的较短 xaml 语法是什么?
-
13-09-2019 - |
题
对于单个绑定,我们使用:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}">
<Binding Path=EmployeeName/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
或更短的语法:
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding Path=EmployeeName}}"/>
现在,如果您有多重绑定:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {2}">
<Binding Path="EmployeeName"/>
<Binding Path="Age"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
我想知道,它的较短语法是什么?
<TextBlock
Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/>
解决方案
根据 MSDN,你的第二个例子(“使用 MultiBinding 和单个 Binding 的更短语法”)不应该起作用,也不应该在 .net 3.5 也不在 .net 4.0:
笔记:
MultiBinding 和 PriorityBinding 不支持 XAML 扩展语法(尽管共享相同的 BindingBase 类,该类实际上实现了 Binding 的 XAML 行为)。
因此,如果它对您有效,那是偶然的,而且它不是受支持的行为。
附:您不需要使用 MultiBinding 单身的 捆绑。以下应该足够了:
<TextBlock>
<TextBlock.Text>
<Binding Path="EmployeeName" />
</TextBlock.Text>
</TextBlock>
或者
<TextBlock Text="{Binding Path=EmployeeName}"/>
甚至更短
<TextBlock Text="{Binding EmployeeName}"/>
不隶属于 StackOverflow