0

我无法真正理解发生了什么。从我以前的线程在这里,我问为什么数据没有在组合框中检索但文本框没有问题。我想要的只是使用导航按钮检索每条记录。组合框属性部分有什么我错过的吗?我所做的事情是否有替代解决方案?所有编码都可以从我以前的线程中获得,在这里,Visual Studio 组件有问题吗?

非常感谢

4

1 回答 1

1

我的朋友,你离这应该怎么做还差得很远。你说的是 a ComboBox,但我认为你一定是指 a 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. 数据应存储在支持INotifyPropertyChanged接口的属性中。
  3. 在 UI 中遍历集合时不应重新加载数据(除非您期望持续更新)。
  4. s等数据对象DataTable不应显示在 UI 中。
  5. 您应该将ItemsSource集合控件的属性绑定到视图模型或代码后面的集合属性。
  6. 您应该将SelectedItem集合控件的属性绑定到视图模型或后面代码中正确类型的属性。
  7. 在您的按钮单击处理程序中,在您的视图模型或代码中设置此选定项,UI 控件将自动更新。
于 2013-07-24T13:17:45.493 回答