将数据检索到组合框中

时间:2013-07-23 12:29:31

标签: c# wpf visual-studio-2010 sql-server-2008

我真的不明白发生了什么。从我之前的帖子here开始,我问为什么数据没有在组合框中检索,但文本框没有问题。我想要的只是使用导航按钮检索每条记录。有没有什么我错过了组合框属性部分?那里有解决方案吗?所有编码都可以从我之前的帖子here获得,Visual Studio组件有问题吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

我的朋友,你到目前为止应该如何做到这一点。你说的是ComboBox,但我认为你的意思是ListView。代码中唯一的ComboBox内部有ComboBoxItem个硬编码,所以我猜你不是在谈论那个。

无论哪种方式,这都是您解决问题的方法:

为您的数据添加与此类似的类:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string HealthDetails { get; set; }
}

将此依赖项属性添加到您的代码后面:

public static readonly DependencyProperty PeopleProperty = DependencyProperty.Register("People", typeof(ObservableCollection<Person>), typeof(MainWindow), new UIPropertyMetadata(new ObservableCollection<Person>()));

public ObservableCollection<Person> People
{
    get { return (ObservableCollection<Person>)GetValue(PeopleProperty); }
    set { SetValue(PeopleProperty, value); }
}

使用您的数据填充People集合。然后最重要的是,绑定到这个集合。以前,您绑定了整个MainWindow.cs类...更改此

<ListView Height="134" HorizontalAlignment="Left" Name="listView1"  
    ItemsSource="{Binding}" VerticalAlignment="Top" Width="384">

到此:

<ListView Height="134" HorizontalAlignment="Left" Name="listView1" 
    ItemsSource="{Binding People}" VerticalAlignment="Top" Width="384">

它对我来说很好。但是,您的导航按钮永远不会像这样工作。这里有很多错误,我根本没有时间为你解决这个问题。以下是您出错的地方摘要:

  1. 永远不会在Window
  2. 后面的代码中提取数据
  3. 数据应存储在支持INotifyPropertyChanged接口的属性中。
  4. 在UI中迭代集合时不应重新加载数据(除非您期望持续更新)。
  5. 不应在UI中显示DataTable等数据对象。
  6. 您应该将集合控件的ItemsSource属性绑定到视图模型或后面的代码中的集合属性。
  7. 您应该将集合控件的SelectedItem属性绑定到视图模型或后面代码中的正确类型的属性。
  8. 在按钮单击处理程序中,在视图模型或代码后面设置此选定项目,UI控件将自动更新。