Привязать список <string>к комбинированному списку - PullRequest
3 голосов
/ 11 августа 2011

У меня есть список строк.Я хочу заполнить поле со списком строк.Как мне это сделать?Все мои попытки и поиски тупиковые.

Я использовал:

<ComboBox  Name="comboBox2" ItemsSource="{Binding Combobox2items}" />
 public partial class EditRule : Window
{
    public ObservableCollection<string> Combobox2items { get;  set; }

    public EditRule()
    {
        InitializeComponent();
        Combobox2items = new ObservableCollection<string>();
    Combobox2items.Add("DFd");

    }}

РЕДАКТИРОВАТЬ: добавление Combobox2items.ItemsSource = Combobox2items; работает, но почему ItemsSource = "{Binding Combobox2items}" нет?1007 *

Ответы [ 3 ]

9 голосов
/ 11 августа 2011

Вы можете открыть ComboBox, фактически каждый ItemsControl, двумя способами.

Первый: добавьте непосредственно элементы к нему, который работает в коде или в Xaml

<ComboBox>
    <ComboBoxItem Name="Item1" />
    <ComboBoxItem Name="Item2" />
</ComboBox>

но это довольно статично. Второй подход использует динамический список.

В качестве примера, давайте предположим, что у вас есть окно и поле со списком в вашем xaml. Combobox получает x:Name="myCombobox"

В своем коде вы можете создать свой список и установить его как ItemsSource

List<string> myItemsCollection = new List<string>();
public Window1()
{
   InitializeComponent();
   myItemsCollection.Add("Item1");
   myCombobox.ItemsSource = myItemsCollection;
}

это работает нормально, но есть одна проблема. Если вы измените список после того, как вы установите его в качестве ItemsSource, пользовательский интерфейс не будет догонять последние изменения. Таким образом, чтобы это работало, вам нужно использовать ObservableCollection, теперь коллекция может уведомлять о любых изменениях, которые пользовательский интерфейс будет прослушивать. и автоматически добавьте новый элемент в выпадающий список.

6 голосов
/ 11 августа 2011

Любой элемент управления на основе списка в WPF имеет свойство ItemsSource, которому вы можете назначить или привязать список.В коде:

comboBox1.ItemsSource = myList;

... или если ваш список является свойством объекта, который является DataContext для вашего окна:

<ComboBox ItemsSource="{Binding MyList}" />
4 голосов
/ 11 августа 2011

Используйте ObservableCollection<string> вместо List<string>, он реализует INotifyCollectionChanged для вас

ObservableCollection Class

WPF предоставляет класс ObservableCollection, который является встроенным реализация сбора данных, который реализует Интерфейс INotifyCollectionChanged

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...