从组合框传递值,从ObservableCollection填充到另一个方法UWP

时间:2016-11-22 13:22:30

标签: c# combobox uwp observablecollection

我的主page.xmal中有一个组合框,它从ObservableCollection中填充并显示国家/地区名称列表。我想要发生的是,当用户选择国家名称时,我想传递一个与每个国家相关的代码。名称和代码都存储在ObservableCollection中。

我认为我可以在组合框中设置一个允许我的属性,将所选项目设置为等于国家/地区代码。任何帮助都会很棒。

     <StackPanel Margin="10,100,0,0" Orientation="Vertical" >
        <ComboBox Name="countryCombo"
            PlaceholderText="Select Country"
            ItemsSource="{x:Bind ReadInFile.CountryCodes, Mode=OneWay}" 
            SelectedIndex="{x:Bind ReadInFile.SelectedIndex}"
            DisplayMemberPath="Name"
            SelectedValuePath="Code"
            MinWidth="250" Margin="5" Opacity="0.65">
        </ComboBox>
        <TextBox Name="CityTextBox" PlaceholderText="Enter City"/>
    </StackPanel>

 private async void WeatherCityButton_Click(object sender, RoutedEventArgs  e)
    {
        var city = CityTextBox.Text.ToString();
        var country = countryCombo.SelectedValuePath.ToString();

        RootObject myCityWeather = await WeatherFacade.GetWeatherCity(country, city);

        WeatherResultCityText.Text = myCityWeather.current_observation.display_location.city + " _  " + myCityWeather.current_observation.temp_c.ToString() + "-" + myCityWeather.current_observation.wind_kph;

    }

1 个答案:

答案 0 :(得分:1)

你已经按照自己的意愿设置了它 - SelectedValuePath正是你所描述的。设置完成后,访问ComboBox的SelectedValue属性将提供所选项目的代码。

您只需更改此行:

var country = countryCombo.SelectedValuePath.ToString();

要:

var country = countryCombo.SelectedValue.ToString();

如果我没有弄错的话,你的方式只会返回“代码”,因为你正在检索你输入的相同值。