如何在WPF中为组合框项设置值?

时间:2015-10-28 08:58:12

标签: c# php wpf visual-studio combobox

我开始研究wpf,我尝试使用组合框,但到目前为止,我遇到了麻烦。我想要的是将组合框的值设置为基于我的项目表的主要ID,并根据我的表的项目名称列显示组合框的文本。

我有一个php背景,所以我尝试在那里编码,这样你们就能更好地理解我想要做的事情:

<?php

$con = mysqli_connect("localhost","root","","inventory");

echo "<form method='POST'>";
echo "<select name='value'>";
echo "<option>Select An Item</option>";

$item_query = mysqli_query($con,"SELECT * FROM item") or mysqli_error();
while($got = mysqli_fetch_assoc($item_query))
{
$item_id = $got['item_id'];
$item_name = $got['item_name'];
echo "<option value='$item_id'>$item_name</option>";    
}

echo "</select>";
echo "<input type='submit' name='submit'/>";
echo "</form>";

if(isset($_POST['submit']))
{
    echo $_POST['value'];
}

?>

到目前为止我在wpf上做了什么:

InitializeComponent();
        comboBox.Items.Add("One");
        comboBox.Items.Add("Two");
        comboBox.Items.Add("Three");

这是我迄今为止唯一不幸做过的事情。我甚至没有将它连接到我的数据库,因为我首先想要确定如何才能应用这些值,然后才会应用我的数据库。

1 个答案:

答案 0 :(得分:0)

假设您还没有MVVM模式的经验,请在XAML和代码隐藏文件中使用DataBinding。

  1. 在Window类上实现INotifyPropertyChanged接口。 INotify ...是关键接口,当UI元素保存的数据在后面的代码中发生更改时,它会通知UI元素。
  2. 您可以在以下链接中找到实施INotifyPropertyChanged的代码:http://www.codeproject.com/Articles/41817/Implementing-INotifyPropertyChanged

    1. 根据组合框的数据库表结构创建一个自定义类Item。也让你的类实现INotifyPropertyChanged接口。强制从属性的setter调用OnPropertyChanged方法。示例代码如下:

      public class Item:InotifyPropertyChanged
      {
      private int id:
      public int Id
      {
      get{return id;}
      set
       {
        id=value;
        OnPropertyChanged(new PropertyChangedEventArgs("Id"));
       }
      
       }
      private string text;
      public string Text
      {
          get { return text; }
          set 
          {
              text = value;
              OnPropertyChanged(new PropertyChangedEventArgs("Id"));
          }
      }
      

      3。 创建一个ObservableCollection类型的容器属性来保存类Window的ComboBox项,如下所示:

      private ObservableCollection<Item> _items;
      public ObservableCollection<Item> Items
      {
          get { return _items; }
          set 
          {
              _items = value;
              OnPropertyChanged(new PropertyChangedEventArgs("Items"));
      
          }
      }
      

      创建一个填充Items容器的方法,并在后面的代码中从Window构造函数中调用该方法。

    2. 最后,更改您的XAML ComboBox定义如下:

           <ComboBox ItemsSource="{Binding Items}"
            DisplayMemberPath="Text"
            SelectedValuePath="Id"/>