C# wpf是否按名称获取值?

C# wpf是否按名称获取值?,c#,wpf,combobox,C#,Wpf,Combobox,在WPF上在c#上我有组合框 <ComboBox x:Name="listCombobox" /> 我希望在组合框上看到的是名称(如现在) 但当我选择时,在代码后面我将看不到我选择的名称 我想看看所选的号码 谢谢 我认为,最简单的方法是将这些数字作为每个列表组合框项的标记: foreach (var item in list) { listCombobox.Items.Add(new ComboBoxItem { Content = item.Name, Tag

在WPF上在c#上我有组合框

     <ComboBox x:Name="listCombobox" />
我希望在组合框上看到的是名称(如现在)

但当我选择时,在代码后面我将看不到我选择的名称 我想看看所选的号码


谢谢

我认为,最简单的方法是将这些数字作为每个
列表组合框
项的标记:

foreach (var item in list) {
    listCombobox.Items.Add(new ComboBoxItem { Content = item.Name, Tag = item.Number });
}
并访问您的号码(
OnSelectedItemchanged
),例如:


我将按如下方式解决它:

...

foreach (var item in list)
    listCombobox.Items.Add(new ComboBoxItem() {
        Content = item.Name,
        Tag = item.Number
    });
当然,您可以使用

int mytag = listCombobox.Items[3].Tag;



的MSDN参考定义这样的类

public class dataObject 
{
   public  int Number { get; set; }
   public string Name { get; set; }            
}
并填写数据,

         List<dataObject> bindingList = new List<dataObject>();          
         bindingList.Add(new dataObject()
         {
             Name = "Smith",
             Number = 1
         });
         bindingList.Add(new dataObject()
         {
             Name = "John",
             Number = 12
         });
         bindingList.Add(new dataObject()
         {
             Name = "Bon",
             Number = 14
         });
        listCombobox.ItemsSource = bindingList;
        listCombobox.DisplayMemberPath = "Name";

我将使用自定义ListItem类并将此类型的对象分配给combobox控件的ItemSource属性,如下所示:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        var list = new List<ListItem>
         {
            new ListItem{ Value = 1, Text = "Smith" },
            new ListItem{ Value = 12, Text = "John" } ,
            new ListItem{ Value = 14, Text = "Bon" }
        }.ToList();

        listCombobox.ItemsSource = list;
        listCombobox.DisplayMemberPath = "Text";
        listCombobox.SelectedValuePath = "Value";
    }

    private void listCombobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var selectedItem = (sender as ComboBox).SelectedItem as ListItem;
        if (selectedItem != null)
        {
            // do something with the selected item
        }
    }
}

public class ListItem
{
    public string Text { get; set; }
    public int Value { get; set; }
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
变量列表=新列表
{
新列表项{Value=1,Text=“Smith”},
新列表项{Value=12,Text=“John”},
新列表项{Value=14,Text=“Bon”}
}.ToList();
listCombobox.ItemsSource=列表;
listCombobox.DisplayMemberPath=“Text”;
listCombobox.SelectedValuePath=“Value”;
}
私有无效列表组合框\u SelectionChanged(对象发送者,SelectionChangedEventArgs e)
{
var selectedItem=(发件人作为组合框)。selectedItem作为列表项;
如果(selectedItem!=null)
{
//对所选项目执行某些操作
}
}
}
公共类列表项
{
公共字符串文本{get;set;}
公共int值{get;set;}
}

请怎么办?你能给我举个例子吗?看看这个答案。还有这个有趣的是,我们同时发布了答案^^
public class dataObject 
{
   public  int Number { get; set; }
   public string Name { get; set; }            
}
         List<dataObject> bindingList = new List<dataObject>();          
         bindingList.Add(new dataObject()
         {
             Name = "Smith",
             Number = 1
         });
         bindingList.Add(new dataObject()
         {
             Name = "John",
             Number = 12
         });
         bindingList.Add(new dataObject()
         {
             Name = "Bon",
             Number = 14
         });
        listCombobox.ItemsSource = bindingList;
        listCombobox.DisplayMemberPath = "Name";
private void listCombobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            dataObject result = (dataObject)listCombobox.SelectedItem;
            var selectedNumber = result.Number;           
        }
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        var list = new List<ListItem>
         {
            new ListItem{ Value = 1, Text = "Smith" },
            new ListItem{ Value = 12, Text = "John" } ,
            new ListItem{ Value = 14, Text = "Bon" }
        }.ToList();

        listCombobox.ItemsSource = list;
        listCombobox.DisplayMemberPath = "Text";
        listCombobox.SelectedValuePath = "Value";
    }

    private void listCombobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var selectedItem = (sender as ComboBox).SelectedItem as ListItem;
        if (selectedItem != null)
        {
            // do something with the selected item
        }
    }
}

public class ListItem
{
    public string Text { get; set; }
    public int Value { get; set; }
}