【问题标题】:Nested curly brackets {{ }} in WPF/XAMLWPF/XAML 中的嵌套大括号 {{ }}
【发布时间】:2011-10-01 05:26:57
【问题描述】:

WPF/XAML 标记中属性值中嵌套的大括号是什么意思?如下例:

 <ListBox ItemsSource="{Binding Source={StaticResource pictures}}">

【问题讨论】:

  • 为什么不能只是&lt;ListBox ItemsSource="{StaticResource pictures}"&gt;

标签: .net wpf xaml binding markup


【解决方案1】:

这会将列表框的ItemsSource 绑定到名为picturesStaticResource。它只是将一个标记扩展嵌套在另一个标记扩展中。

在此处了解 XAML 中的标记扩展:http://msdn.microsoft.com/en-us/library/ms747254.aspx

【讨论】:

  • 好的,谢谢。使用以下简化符号无法实现相同的效果:
  • 不行,当你数据绑定到ItemsSource时你需要指定Binding对象,所以你必须使用{Binding Source=...}
  • @BoltClock:不需要绑定。任何依赖属性都可以有一个普通的赋值。由于Source 是固定的并且Path 默认为.,因此Andrew 提出的简化在这种情况下确实是相同的。如果指定了非默认 Path,则不会出现这种情况。
【解决方案2】:

WPF 支持多个标记扩展的嵌套,每个标记扩展将首先评估最深。

 <Setter Property="Background"
Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />

在这种用法中,首先计算 x:Static 语句并返回一个字符串。然后将该字符串用作 DynamicResource 的参数。

所以这里

<ListBox ItemsSource="{Binding Source={StaticResource pictures}}">

它将图片(可能是收藏)分配给列表框的itemsource

请看这个http://msdn.microsoft.com/en-us/library/ms747254.aspx#Nesting

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多