首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >wpf/数据库是如何解决这一歧义的?

wpf/数据库是如何解决这一歧义的?
EN

Stack Overflow用户
提问于 2012-12-05 14:35:01
回答 3查看 235关注 0票数 0
代码语言:javascript
代码运行次数:0
运行
复制
<StackPanel DataContext="{StaticResource Employees1}">
    <ListBox ItemsSource="{Binding}" DisplayMemberPath="Name" 
                  IsSynchronizedWithCurrentItem="True"/>
    <Label Content="{Binding Path=Count}"/>
    <Label Content="{Binding Path=Name}"/>
</StackPanel>

如何解决标签的绑定问题?如何确定第二个标签的内容绑定到Employees1.Count (而不是Employee.Count),而第一个标签绑定到Employee.Name,并与listbox选择进行同步?另外,如果我想将第一个标签绑定到Employee.Count上呢?

(Employee有属性名称(可能还有计数),Employees1是ObservableCollection类型的Employee)。

编辑:所以,这里的问题是为什么第一个标签显示ObservableCollection中的员工数,而第二个标签显示集合中特定员工的名称,即当前在ListBox中选择的那个。显然,第一个标签绑定到整个集合,第二个标签绑定到集合中的特定员工。但是为什么,以及如何控制这种行为。

EN

回答 3

Stack Overflow用户

发布于 2012-12-05 16:39:12

来自MSDN 数据绑定概述,绑定到集合的“当前项指针”一节:

因为WPF仅通过使用视图(指定的视图或集合的默认视图)绑定到集合,所以指向集合的所有绑定都有一个当前项指针。

以及“主细节绑定场景”一节:

这是因为当单个对象(本例中的ContentControl )绑定到集合视图时,它会自动绑定到视图的CurrentItem。

在您的示例中,第二个标签自动绑定到Employees1集合的默认视图的当前项。第一个标签也会像这样绑定,但是由于item对象没有Count属性,它显然返回到集合本身的Count属性的绑定。然而,我不知道后一种行为是否在某个地方有记载。

票数 1
EN

Stack Overflow用户

发布于 2012-12-05 15:39:58

正如Blam所说--标签与列表框没有任何关系--我认为您在这里要做的是将员工的observableCollection与属性、计数和名称绑定到列表框中。

要做到这一点,您需要列表框中的ItemsTemplate

代码语言:javascript
代码运行次数:0
运行
复制
<ListBox ItemSource={Binding Employees1}>
<ListBox.ItemTemplate>
  <DataTemplate>
    <StackPanel Orientation="Horizontal">
        <Label Content="{Binding Count}" />
        <Label Content="{Binding Name}" />

    </StackPanel>
  </DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
票数 0
EN

Stack Overflow用户

发布于 2012-12-05 16:06:00

让我试着回答这些问题。

ObservableCollection有一个属性计数。

至于在第二个标签上得到一个属性,它是在做一些假设。

在其他版本的.NET中,您可能不会得到相同的行为。

不应将显示单个值的控件绑定到集合。

如果要从ListBox中选择选定的项,请参阅此链接

在这里输入链接描述

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13725559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档