Как сохранить скрытое значение в поле со списком WPF для использования в методе SelectionChanged - PullRequest
2 голосов
/ 28 января 2011

У меня есть поле со списком:

<ComboBox Name="Gen2Fis" ItemsSource="{Binding Path=Table}"   SelectionChanged="Gen2Fis_SelectionChanged"  DisplayMemberPath="LongName">

Запрос, используемый для заполнения этого поля со списком:

Select ShortName, LongName from Table;

На основе элемента, выбранного из этого списка, я хочу вызвать другой метод свыбранный элемент, но мне нужно использовать ShortName (который не отображается) вместо LongName (который есть).

Как мне поступить?Могу ли я как-то скрыть короткое имя в списке?

Мой метод загрузки поля со списком:

public void LoadFINamesIntoList(string mainDB)
    {
        XiphosStr.ConnectString = mainDB;
        dbConnection = new MyDatabaseConnection(XiphosStr.ConnectString);
        DataSet ds = dbConnection.ExecuteQuery(Queries.getFIs);

        Gen2Fis.DataContext = ds.Tables[0].DefaultView;   
    }

Мой метод изменения выбора:

private void Gen2Fis_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        string gen2fi = (XiphosDB2.SelectedItem as ComboBoxItem).Content.ToString();
        Gen2Str.ConnectString = gen2fi;
        DisplayGen2Users();
    }

gen2fiбудет соответствовать длинному имени, но мне нужно короткое имя.

Спасибо за любую помощь.

Джейсон

1 Ответ

1 голос
/ 28 января 2011

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

<ComboBox Name="Gen2Fis" ItemsSource="{Binding Path=Table}"   SelectionChanged="Gen2Fis_SelectionChanged"  DisplayMemberPath="LongName" SelectedValuePath="ShortName">

, а затем в событии selectionchanged вы сможете использовать selectedValue.

private void Gen2Fis_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        string gen2fi = ((ComboBox)sender).SelectedValue ;
        Gen2Str.ConnectString = gen2fi;
        DisplayGen2Users();
    }
...