如何获取组合框中所选项目的 ID。 C# 地铁应用程序
How to get an ID of a selected item in a combobox. C# Metro App
我有一个组合框,它从 API 中获取值。我想获取该组合框中 selected 项目的 ID,因为我的下一个视图中的数据会根据此处的值 selected 发生变化。
我的组合框。
<ComboBox x:Name="cmbSubjects" HorizontalAlignment="Right" Background="#FFE5DBE8" Width="141" SelectedItem="Maths" Margin="0,217,957,247" ItemsSource="{Binding Source={StaticResource cvsSubjects}}" PlaceholderText="Select"/>
这就是我填充它的方式。
private async void getSubjects()
{
try
{
string subjects = baseAddress + "subjects";
var cont = await httpClient.GetStringAsync(new Uri(subjects));
subjectHelper data = JsonConvert.DeserializeObject<subjectHelper>(cont);
foreach (var item in data.result)
{
cmbSubjects.Items.Add(item.name);
}
}
catch (Exception ex)
{
MessageDialog messageDialog = new MessageDialog(ex.Message);
messageDialog.ShowAsync();
}
}
我的类:
public class Subject
{
public int id { get; set; }
public string name { get; set; }
public string code { get; set; }
public string description { get; set; }
public curriculum curriculam { get; set; }
}
class subjectHelper
{
public List<Subject> result { get; set; }
}
public class unit
{
public int id { get; set; }
public string name { get; set; }
public string code { get; set; }
public string description { get; set; }
public string image { get; set; }
public int teachingHours { get; set; }
public int isMandotory { get; set; }
public Subject subject { get; set; }
}
class unitHelper
{
public List<unit> result { get; set; }
}
用户将能够 select 组合框中的主题,所以我希望它是 return 主题,这样我就可以根据主题动态加载单元。
有人请帮我做这个..
感谢任何形式的帮助......
Combobox 有一个 SelectionChanged
事件,只要你 select 一个新项目,你就可以从你的组合框中捕获你的 selected 项目,在那个事件中触发你可以捕获对象和传ID。
修改后,在 XAML
中添加 SelectionChanged
属性 后,您的组合框将如下所示
<ComboBox x:Name="cmbSubjects" HorizontalAlignment="Right" Background="#FFE5DBE8" Width="141" SelectedItem="Maths" Margin="0,217,957,247" ItemsSource="{Binding Source={StaticResource cvsSubjects}}" PlaceholderText="Select" SelectionChanged="ComboBox_SelectionChanged"/>
您后面的代码将是
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Subject selectedSubject = cmbSubjects.SelectedItem as Subject;
int selectedSubID = selectedSubject.ID;
}
您需要为此稍微更改一下代码。
<ComboBox x:Name="cmbSubjects" HorizontalAlignment="Right" Background="#FFE5DBE8" Width="141" SelectedItem="Maths" Margin="0,217,957,247" PlaceholderText="Select"> <ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding name}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
并设置itemssource如下:
cmbSubjects.ItemsSource=data.Result;
然后在 SelectionChanged 事件中
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Subject selectedSubject = cmbSubjects.SelectedItem as Subject;
if(selectedSubject!=null){
int selectedSubID = selectedSubject.ID;}
}
我有一个组合框,它从 API 中获取值。我想获取该组合框中 selected 项目的 ID,因为我的下一个视图中的数据会根据此处的值 selected 发生变化。
我的组合框。
<ComboBox x:Name="cmbSubjects" HorizontalAlignment="Right" Background="#FFE5DBE8" Width="141" SelectedItem="Maths" Margin="0,217,957,247" ItemsSource="{Binding Source={StaticResource cvsSubjects}}" PlaceholderText="Select"/>
这就是我填充它的方式。
private async void getSubjects()
{
try
{
string subjects = baseAddress + "subjects";
var cont = await httpClient.GetStringAsync(new Uri(subjects));
subjectHelper data = JsonConvert.DeserializeObject<subjectHelper>(cont);
foreach (var item in data.result)
{
cmbSubjects.Items.Add(item.name);
}
}
catch (Exception ex)
{
MessageDialog messageDialog = new MessageDialog(ex.Message);
messageDialog.ShowAsync();
}
}
我的类:
public class Subject
{
public int id { get; set; }
public string name { get; set; }
public string code { get; set; }
public string description { get; set; }
public curriculum curriculam { get; set; }
}
class subjectHelper
{
public List<Subject> result { get; set; }
}
public class unit
{
public int id { get; set; }
public string name { get; set; }
public string code { get; set; }
public string description { get; set; }
public string image { get; set; }
public int teachingHours { get; set; }
public int isMandotory { get; set; }
public Subject subject { get; set; }
}
class unitHelper
{
public List<unit> result { get; set; }
}
用户将能够 select 组合框中的主题,所以我希望它是 return 主题,这样我就可以根据主题动态加载单元。
有人请帮我做这个.. 感谢任何形式的帮助......
Combobox 有一个 SelectionChanged
事件,只要你 select 一个新项目,你就可以从你的组合框中捕获你的 selected 项目,在那个事件中触发你可以捕获对象和传ID。
修改后,在 XAML
中添加SelectionChanged
属性 后,您的组合框将如下所示
<ComboBox x:Name="cmbSubjects" HorizontalAlignment="Right" Background="#FFE5DBE8" Width="141" SelectedItem="Maths" Margin="0,217,957,247" ItemsSource="{Binding Source={StaticResource cvsSubjects}}" PlaceholderText="Select" SelectionChanged="ComboBox_SelectionChanged"/>
您后面的代码将是
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Subject selectedSubject = cmbSubjects.SelectedItem as Subject;
int selectedSubID = selectedSubject.ID;
}
您需要为此稍微更改一下代码。
<ComboBox x:Name="cmbSubjects" HorizontalAlignment="Right" Background="#FFE5DBE8" Width="141" SelectedItem="Maths" Margin="0,217,957,247" PlaceholderText="Select"> <ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding name}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
并设置itemssource如下:
cmbSubjects.ItemsSource=data.Result;
然后在 SelectionChanged 事件中
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Subject selectedSubject = cmbSubjects.SelectedItem as Subject;
if(selectedSubject!=null){
int selectedSubID = selectedSubject.ID;}
}