WPF ComboBox установка выбранного значения - PullRequest
0 голосов
/ 09 апреля 2019

Не уверен, почему я не могу заставить это работать. У меня есть комбинированный список в WPF. Хотите пройтись по всем элементам управления и установить там, где критерии выполнены. Я нахожу совпадение, но не могу установить значение. этот пример смоделирован после подхода «выбранное значение» ... Установить SelectedItem WPF ComboBox

 bool match = false;
            foreach (ComboBoxItem cbi in cb_Divisinos.Items)
            {
                if (cbi.Content.ToString().Split('-')[0].Trim() == family.Division.ToString()) {
                    cb_Divisinos.SelectedValue = cbi.Content.ToString();
                    match = true;
                }
            }

Ответы [ 3 ]

0 голосов
/ 09 апреля 2019

Если ваш ComboBox явно заполнен ComboBoxItems, например:

<ComboBox x:Name="cb_Divisinos">
    <ComboBoxItem>Division A - xyz</ComboBoxItem>
    <ComboBoxItem>Division B - abc</ComboBoxItem>
</ComboBox>

... вы можете просто установить свойство SelectedItem для ComboBoxItem, которое вы хотите выбрать:

bool match = false;
foreach (ComboBoxItem cbi in cb_Divisinos.Items)
{
    if (cbi.Content.ToString().Split('-')[0].Trim() == family.Division.ToString())
    {
        cb_Divisinos.SelectedItem = cbi;
        match = true;
        break;
    }
}
0 голосов
/ 09 апреля 2019

Другой подход, который лучше работает для меня, состоит в том, чтобы выбрать элемент с помощью SelectedIndex следующим образом:

bool match = false;
int selectedIndexNumber = 0;
            foreach (ComboBoxItem cbi in cb_Divisinos.Items)
            {
                if (cbi.Content.ToString().Split('-')[0].Trim() == family.Division.ToString()) {
                    cb_Divisinos.SelectedValue = cbi.Content.ToString();
                    match = true;
                    break;
                }
                    selectedIndexNumber += 1;

            }

, а затем применить выбранный индекс как ...

cb_Divisinos.SelectedIndex = selectedIndexNumber;

вComboBox устанавливает привязку для SelectedIndex ...

<ComboBox Name="cb_Divisinos" ItemsSource="{Binding }"
          DisplayMemberPath="Name"
          SelectedValuePath="CategoryID" SelectedIndex="{Binding Mode=OneWay}">
</ComboBox>

Вам не нужно указывать значение или имя поля для привязки SelectedIndex;просто установите его, как я показал выше.

0 голосов
/ 09 апреля 2019

Если бы я мог видеть ваш XAML, это было бы полезно, но если бы мне пришлось угадывать, я бы сказал, что, скорее всего, вы не устанавливаете SelectedValuePath для элемента ComboBox в XAML.

<ComboBox Grid.Row="1" Grid.Column="0" 
          Name="combo" SelectedValuePath="Content">

Чтобы этот процесс работал правильно, элементы также должны быть определены в XAML, а не через источник связанных элементов. Если вы привязываетесь к Источнику Предметов, вам нужно будет использовать вместо этого подход SelectedItem.

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

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