C# 组合框WPF列表

C# 组合框WPF列表,c#,wpf,data-binding,combobox,C#,Wpf,Data Binding,Combobox,我做这个小程序只是为了学习如何将对象列表中的一些数据绑定到组合框。我想做的是在文本块中显示组合框中某些单词的翻译。在组合框中,我想要英文单词,在文本块中,比如西班牙语 为此,我在xaml中创建了一个名为cmbox1的组合框和一个名为tb1的文本块 然后我创建了“word”类: 清单上有三个字: private void Window_Loaded_1(object sender, RoutedEventArgs e) { // Creation of a list of

我做这个小程序只是为了学习如何将对象列表中的一些数据绑定到组合框。我想做的是在文本块中显示组合框中某些单词的翻译。在组合框中,我想要英文单词,在文本块中,比如西班牙语

为此,我在xaml中创建了一个名为cmbox1的组合框和一个名为tb1的文本块

然后我创建了“word”类:

清单上有三个字:

 private void Window_Loaded_1(object sender, RoutedEventArgs e)
    {
        // Creation of a list of objects of class "word"
        List<word> mydictionary = new List<word>();

        word word1 = new word();
        word1.english = "Hello";
        word1.spanish = "Hola";

        word word2 = new word();
        word2.english = "Goodbye";
        word2.spanish = "Adios";

        word word3 = new word();
        word3.english = "How are you?";
        word3.spanish = "¿Qué tal?";

        mydictionary.Add(word1);
        mydictionary.Add(word2);
        mydictionary.Add(word3);

        //Adding the objects of the list mydictionary to combobox <---
        foreach (word myword in mydictionary)
        {
            cmbBox1.Items.Add(myword);
        }



    }
private void Window_Loaded_1(对象发送方,路由目标)
{
//创建“word”类对象列表
List mydictionary=新列表();
单词1=新单词();
word1.english=“你好”;
word1.spanish=“Hola”;
单词2=新单词();
word2.english=“再见”;
word2.spanish=“再见”;
单词3=新单词();
word3.english=“你好吗?”;
word3.spanish=“;
mydictionary.Add(word1);
mydictionary.Add(word2);
mydictionary.Add(word3);

//将list mydictionary的对象添加到combobox我认为您应该开始逐步学习C#和WPF。尝试绑定到类而不是绑定到实例或集合不是理解WPF的问题

但我知道有几个人在理解WPF中的数据绑定时遇到了很大的问题,所以我将拿起你的帖子来描述这个简单的例子

1) 不要手动添加项目(
cmbox1.items.add(myword);
)-这就是数据绑定的用途

2) 无法绑定到类型(如
Binding Path=word
)。必须绑定到对象/集合。对象/集合必须是属性,而不是像
mydictionary
的实现那样的本地集合

public List<Word> MyDictionary {get; set;}
public Word SelectedWord {get; set;}

ItemsSource="{Binding Path=MyDictionary}"
SelectedItem="{Binding SelectedWord}"
4) 要对选择更改作出反应,请处理SelectionChanged事件:

 <ComboBox [...] SelectionChanged="cmbBox1_SelectionChanged" />

完整WPF:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid>
    <ComboBox x:Name="cmbBox1" HorizontalAlignment="Left" Margin="133,122,0,0" 
              VerticalAlignment="Top" Width="120" 
              ItemsSource="{Binding MyDictionary}" 
              DisplayMemberPath="english" 
              SelectedValuePath="english" 
              SelectedItem="{Binding SelectedWord}"
              SelectionChanged="cmbBox1_SelectionChanged" />
</Grid>
</Window>

全C#:

公共类单词
{
公共字符串英语{get;set;}
公共字符串西班牙语{get;set;}
}
公共部分类主窗口:窗口
{
公共列表MyDictionary{get;set;}
公共字选择字{get;set;}
公共主窗口()
{
初始化组件();
}
已加载私有无效窗口(对象发送器、路由目标)
{
MyDictionary=新列表();
单词1=新单词();
word1.english=“你好”;
word1.spanish=“Hola”;
单词2=新单词();
word2.english=“再见”;
word2.spanish=“再见”;
单词3=新单词();
word3.english=“你好吗?”;
word3.spanish=“;
MyDictionary.Add(word1);
MyDictionary.Add(word2);
MyDictionary.Add(word3);
DataContext=this;
}
private void cmbBox1\u SelectionChanged(对象发送方,SelectionChangedEventArgs e)
{
MessageBox.Show(“您已经选择了单词\”“+SelectedWord.spanish+”\”);
}
}

非常感谢。你帮了我很多忙。
DataContext = this;
 <ComboBox [...] SelectionChanged="cmbBox1_SelectionChanged" />
<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid>
    <ComboBox x:Name="cmbBox1" HorizontalAlignment="Left" Margin="133,122,0,0" 
              VerticalAlignment="Top" Width="120" 
              ItemsSource="{Binding MyDictionary}" 
              DisplayMemberPath="english" 
              SelectedValuePath="english" 
              SelectedItem="{Binding SelectedWord}"
              SelectionChanged="cmbBox1_SelectionChanged" />
</Grid>
</Window>
public class Word
{
    public string english { get; set; }
    public string spanish { get; set; }
}

public partial class MainWindow : Window
{
    public List<Word> MyDictionary {get; set;}

    public Word SelectedWord {get; set;}

    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        MyDictionary = new List<Word>();

        Word word1 = new Word();
        word1.english = "Hello";
        word1.spanish = "Hola";

        Word word2 = new Word();
        word2.english = "Goodbye";
        word2.spanish = "Adios";

        Word word3 = new Word();
        word3.english = "How are you?";
        word3.spanish = "¿Qué tal?";

        MyDictionary.Add(word1);
        MyDictionary.Add(word2);
        MyDictionary.Add(word3);

        DataContext = this;
    }

    private void cmbBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        MessageBox.Show("You have selected the word \"" + SelectedWord.spanish + "\"");
    }
}