Как я могу назначить значение выбранного элемента в выпадающем списке? - PullRequest
0 голосов
/ 27 февраля 2020

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

Это поле со списком

<ComboBox x:Name="MyComboBox" VerticalAlignment="Center" Width="50" Padding="1" Height="23">
     <ComboBoxItem IsSelected="True">A</ComboBoxItem>
     <ComboBoxItem>B</ComboBoxItem>
     <ComboBoxItem>C</ComboBoxItem>
     <ComboBoxItem>D</ComboBoxItem>
     <ComboBoxItem>E</ComboBoxItem>
     <ComboBoxItem>F</ComboBoxItem>
     <ComboBoxItem>G</ComboBoxItem>
     <ComboBoxItem>H</ComboBoxItem>
     <ComboBoxItem>I</ComboBoxItem>
     <ComboBoxItem>K</ComboBoxItem>
     <ComboBoxItem>L</ComboBoxItem>
     <ComboBoxItem>M</ComboBoxItem>
     <ComboBoxItem>N</ComboBoxItem>
</ComboBox>

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

Это то, что я пытаюсь безуспешно:

//I get a value from reading a datareader

string MyValue = datareader.GetString(0);

// I assign the value to the combobox:

MyComboBox.SelectedItem = MyValue; //Attempt 1

MyComboBox.SelectedValue = MyValue; //Attempt 2

MyComboBox.Text= MyValue; //Attempt 3

MyComboBox.SelectedIndex = MyValue; //Attempt 4. Throws an error as MyValue is a string

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Я думаю, что это не работает, потому что вы добавляете ComboBoxItem s к вашему ComboBox. Попробуйте добавить строки программно как строки, а не ComboBoxItems, и посмотрите, поможет ли это.

Если вы не хотите этого делать, попробуйте следующее:

MyComboBox.SelectedItem = MyComboBox.Items.Select(i => i as ComboBoxItem).FirstOrDefault(i => (i.Content as string) == "The string you want to select");

Редактировать: Это будет выберите элемент с тем же содержимым, что и введенную строку.

Примечание: вам нужно добавить using System.Linq; в начало строки для

Надежда, которая помогает

1 голос
/ 27 февраля 2020

Вы пробовали этот метод:

Используя visual studio, в режиме конструктора или .xaml, если дважды щелкнуть ComboBox, он автоматически сгенерирует код для SelectionChanged в файле .xaml.cs. Кроме того, на .xaml, когда вы нажимаете ComboBox, он сообщит вам имя объекта на вкладке свойств. В этом примере мой comboBox:

private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    string selectedItem = comboBox.Items[comboBox.SelectedIndex].ToString();
    Console.WriteLine(selectedItem);
}

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

И так, чтобы изменить значение из того, что показано в comboBox во время выполнения, по любой причине, которая может быть, вы можете использовать что-то вроде этого:

comboBox.SelectedItem = comboBox.Items[0];

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

Из того, что я понимаю, вам нужно было бы назначить текст для элемента, уже находящегося в ComboBox:

string MyValue = "asd";
comboBox.Items.Add(MyValue);
comboBox.Text = MyValue;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...