Установить выбранное значение в выпадающем списке в WPF - PullRequest
2 голосов
/ 08 апреля 2020

У меня есть простой WPF с выпадающим списком; когда я использую новый массив в качестве источника элементов (COMMENTED LINE IN CODE), я могу установить значение по умолчанию, задав SelectedValue="..." (строку из другого результата запроса. Но когда я использую запрос и читаю из БД. добавление элементов работает, но настройка SelectedValue задание не работает!

мой xaml.cs код:

tempdbEntities mydb = new tempdbEntities();
public MainWindow()
{
    InitializeComponent();
    FillForm(1);
}

private void Window_Activated(object sender, EventArgs e)
{
    //cmbVendors.ItemsSource = new string[] { "ABC", "BCD", "EFG" };

    cmbVendors.ItemsSource = mydb.tbl_Company.Where(c => c.Id < 5).ToList();
    cmbVendors.DisplayMemberPath = "Name";    
}

private void FillForm(int ID0)
{    
    cmbVendors.SelectedValue = mydb.tbl_Company.Where(c => c.Id == ID0).Single().Name;    
}

Xaml код:

<Grid Margin="0,-41,0,0">
    <ComboBox Name="cmbVendors" HorizontalAlignment="Left" 
              Margin="474,102,0,0" VerticalAlignment="Top" 
              Width="231"/>    
</Grid>

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

что я хочу сделать: это форма редактирования. когда форма загружена, должны заполнить все компоненты в форме, текстовые поля, комбинированные списки, ... по данным из таблицы. cmbVendors, как и другие компоненты, должны показывать контент, полученный из БД, и если пользователь хочет изменить его, он может это сделать. и нажмите «отправить» ....

Я изменил метод FillForm следующим образом:

private void FillForm(int ID0)
        {
            cmbVendors.SelectedValuePath = "Name";
            cmbVendors.SelectedValue = mydb.tbl_Company.Where(c => c.Id == ID0).Single().Name;

        }

Спасибо. Работает хорошо!

0 голосов
/ 08 апреля 2020

Combobox's DisplayMemberPath будет просто контролировать то, что должно отображаться; SelectedValue будет по-прежнему вашего Model типа. Вам нужно установить

cmbVendors.SelectedValuePath = "Name";

. Это обеспечит, что ваши cmbVendors SelectedValue будут удерживать Name.

...