【问题标题】:Problems with data binding listbox数据绑定列表框的问题
【发布时间】:2012-05-10 06:10:54
【问题描述】:

突然之间出现了一个我以前没有的列表框绑定问题。

我有一个 ViewModel,其中有两个 observablecollection,其中包含一些数据。两个列表都正确填充。

在 MainPage() 构造函数中

DataContext = App.ViewModel;
InitializeComponent();

ViewModel 中的列表:

public ObservableCollection<Saloon> Saloons { get { return ... } set { ... } }
public ObservableCollection<TTSaloon> TTList { get { return ... } set { ... } }

我将第一个列表绑定到地图控件,并且能够将图钉绑定到列表中的“位置”属性。

<my:Map DataContext="{Binding Saloons}"....> 
<my:Pushpin Location="{Binding Location}"/>...</my:Map>

以上工作正常。但我也有一个列表框,应该像这样绑定到其他集合(TTList):

<ListBox ItemsSource="{Binding TTList}" DataContext="{Binding}" Name="listBox1">
                  <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Vertical">
                                <TextBlock Text="{Binding Path=CustomerName}" Foreground="White" />
                             </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

但这根本不起作用。我尝试了很多不同的东西:

  • 在代码隐藏中设置 ItemSource

  • 从 ListBox 中移除 DataContext

  • 将绑定路径更改为 Listname.Property

  • 将元素上的 DataContexts 设置为代码隐藏中的特定列表。

  • 在 InitializeComponent() 之后设置 DataContext

我没有想法,我在这里缺少什么,调试器也没有警告我。 “客户名称”字段确实存在并打印到控制台。

编辑:它是一个枢轴应用程序,如果可能产生影响,列表框位于第二个枢轴项中。

【问题讨论】:

  • 你是如何填充 TTList 的?
  • 它是从 web 服务填充的,一个 json 响应被序列化为一个类。这两个列表的填充方式相同,只是来源不同。
  • 收到数据并填充列表后是否需要设置DataContext?当我绑定你不需要的图钉时
  • CustomerName 需要是公共属性,是这样吗?
  • 是的。试图将列表框绑定到沙龙列表(图钉绑定到没有任何问题),但这也不起作用。现在我更加困惑了。 Saloon 列表被接受为地图的数据上下文,但不作为列表框的项目源。

标签: windows-phone-7 xaml data-binding


【解决方案1】:

你的前景设置为白色。也许您只是因为白色背景上的白色字母而看不到这些项目?

【讨论】:

  • 嘿嘿我曾经犯过这个错误,但是现在背景是黑色的。
【解决方案2】:

当 ObservableCollection 被“设置”一个值时,你是否正在提高 OnPropertyChanged?

(ObservableCollection 仅在执行“添加”、“删除”或“清除”时自行引发更改)

【讨论】:

  • 是的,但是这里发生了其他事情。当我将用于填充集合的方法和集合本身移动到 MainPage.cs 文件时,如果我在 OpenReadCompleted 时设置 ItemSource,它就会起作用。奇怪的是我无法将 Saloon 列表(已经绑定到地图)绑定到列表框。
猜你喜欢
  • 1970-01-01
  • 2010-11-22
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多