【问题标题】:What's the shorter xaml syntax for Multibinding using StringFormat with multiple bindings?使用带有多个绑定的 StringFormat 的 Multibinding 的较短 xaml 语法是什么?
【发布时间】:2010-12-24 01:52:34
【问题描述】:

对于单个绑定,我们使用:

<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 ??????}"/>

【问题讨论】:

    标签: wpf xaml binding multibinding string-formatting


    【解决方案1】:

    根据 MSDN,您的第二个示例(“使用带有单个绑定的 MultiBinding 的更短语法”)在 .net 3.5.net 4.0 中都不起作用:

    注意:

    MultiBinding 和 PriorityBinding 不支持 XAML 扩展语法(尽管共享相同的 BindingBase 类,该类实际上实现了 Binding 的 XAML 行为)。

    所以,如果它对你有用,那是偶然的,它不是受支持的行为。


    PS:您不需要为 single 绑定使用 MultiBinding。以下内容就足够了:

    <TextBlock>
        <TextBlock.Text>
            <Binding Path="EmployeeName" />
        </TextBlock.Text>
    </TextBlock>
    

    <TextBlock Text="{Binding Path=EmployeeName}"/>
    

    甚至更短

    <TextBlock Text="{Binding EmployeeName}"/>
    

    【讨论】:

    • 是的,这可能是一种意外行为。我提供的较短语法是由 Visual Studio 2008 在粘贴 WPF 元素时生成的。由于我没有对其进行编码,因此我在考虑是否可以为多个绑定路径执行此较短版本。谢谢海因齐!
    • 哦,真可惜,那真是太酷了。像这样的图像:AutomationProperties.Name="{MultiBinding.... 我想使用 2 个连接的静态资源。现在我必须为元素定义一个 stile 以使用多重绑定等。:(
    猜你喜欢
    • 2014-10-04
    • 2010-11-03
    • 1970-01-01
    • 2010-09-05
    • 2011-09-26
    • 2014-12-27
    • 1970-01-01
    • 2011-03-28
    • 2012-06-16
    相关资源
    最近更新 更多