我的主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;
}
答案 0 :(得分:1)
你已经按照自己的意愿设置了它 - SelectedValuePath
正是你所描述的。设置完成后,访问ComboBox的SelectedValue
属性将提供所选项目的代码。
您只需更改此行:
var country = countryCombo.SelectedValuePath.ToString();
要:
var country = countryCombo.SelectedValue.ToString();
如果我没有弄错的话,你的方式只会返回“代码”,因为你正在检索你输入的相同值。