Как установить значение для поля со списком в WPF?

Я начал изучать wpf и пытался работать со списками, но пока у меня проблемы. То, что я хотел, это установить значение поля со списком на основе основного идентификатора моей таблицы элементов и показать текст поля со списком на основе столбца имени элемента моей таблицы.

У меня есть опыт работы в 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");

Это единственное, что я, к сожалению, сделал до сих пор. Я даже не подключил его к своей базе данных, так как сначала хотел определить, как я смогу применить значения, и только после этого я буду применять свою базу данных.

0

Решение

Предполагая, что у вас еще нет опыта работы с шаблоном MVVM, используйте DataBinding в файлах XAML и codebehind.

  1. Реализуйте интерфейс INotifyPropertyChanged в своем классе Window. INotify … является критически важным интерфейсом, который уведомляет элемент UI всякий раз, когда данные, которые содержит элемент UI, изменяются в коде позади.

Вы можете найти код для реализации INotifyPropertyChanged по ссылке ниже: http://www.codeproject.com/Articles/41817/Implementing-INotifyPropertyChanged

  1. Создайте пользовательский класс Item, соответствующий вашей структуре таблицы базы данных для вашего комбинированного списка. Также заставьте ваш класс реализовать интерфейс INotifyPropertyChanged. Обязательный вызов метода 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 для хранения элементов 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"/>
    
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]