【问题标题】:Binding to container not working, but binding to objects works绑定到容器不起作用,但绑定到对象有效
【发布时间】:2010-11-15 16:29:02
【问题描述】:

我有以下 Xaml(Silverlight,但没关系):

<ListBox x:Name="Results"> ... </ListBox>
<StackPanel DataContext="{Binding ElementName=Results, Path='SelectedItem.Attributes'}">
  <TextBlock Text="{Binding ElementName=Results, Path='SelectedItem.Attributes[ID]'}" />
  <TextBlock Text="{Binding '[ID]'}" />
</StackPanel>

当我填充 ListBox 时,会填充第二个 TextBlock,但不会填充第一个 TextBlock。当我从列表框中选择任何项目时,第一个 TextBlock 会被填充,但第二个不会改变。

我假设我遗漏了一些东西来告诉 StackPanel 的 DataContext,每当我更改 ListBox 中的 SelectedItem 时它都需要刷新,但我不知道我需要做什么。

理想情况下,我不想为我的每个 TextBlocks 绑定到整个路径(会有一堆)。

【问题讨论】:

  • 嗨 Rob,我觉得它看起来不错。我自己创建了一个小例子,它很有效(如果你愿意,我会发布它)。您能否提供更多信息。列表框的ItemsSource是什么,...也许这有助于解决您的问题。
  • 我将代码中的 ListBox 绑定到 List ... obj 有一个 Dictionary 属性,称为 Attributes。当我像在顶部 TextBlock 中那样绑定东西时,它可以正常工作,但我想绑定像第二个 TextBlock 这样的东西。底部的 TextBlock 被绑定,但仅在我填充 ListBox 时,而不是在所选项目更改时。顶部的 TextBlock 仅被填充,然后 ListBox 的 SelectedItem 被更改,而不是在填充时......

标签: silverlight data-binding xaml binding


【解决方案1】:

嘎……我找到了。一些傻瓜(你读过......我)认为当我填充 ListBox 时覆盖堆栈面板的数据上下文会很聪明。对正在处理此问题的任何人表示抱歉。

【讨论】:

    猜你喜欢
    • 2018-05-03
    • 1970-01-01
    • 2012-02-08
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2010-12-08
    相关资源
    最近更新 更多