在使用ItemsSource和帮助使用combobox之前,WPF Items集合必须为空

                        

我的XAML是这样的,它看起来像这样:

http://puu.sh/aLLrx.png

http://puu.sh/aLLsQ.jpg

我的代码是:

  public partial class MainWindow : Window { Character aloken; Character azureKnight; Character bagiWarrior; Character incarMagician; Character segitaHunter; Character segnale; Character viciousSummoner; private List _charList = new List(); public MainWindow() { InitializeComponent(); charList.Add(new Character("Bagi Warrior")); this.Item = new ObservableCollection(); this.Character = new ObservableCollection(); this.DataContext = this; //Character.Add(new Character(name: "Bagi Warrior", level: 197, characterClass: CharacterClass.Bagi_Warrior, gender: Gender.Male, strength: 450, intelligence: 4, dexterity: 84, gold: 147203352)); //Character.Add(new Character(name: "Azure Knight", level: 158, characterClass: CharacterClass.Azure_Knight, gender: Gender.Male, strength: 390, intelligence: 120, dexterity: 92, gold: 204220567)); //Character.Add(new Character(name: "Incar Magician", level: 169, characterClass: CharacterClass.Incar_Magician, gender: Gender.Female, strength: 4, intelligence: 512, dexterity: 57, gold: 172223520)); //Character.Add(new Character(name: "Vicious Summoner", level: 203, characterClass: CharacterClass.Vicious_Summoner, gender: Gender.Male, strength: 423, intelligence: 89, dexterity: 45, gold: 114225587)); } public List charList { get { return _charList; } set { _charList = value; } } private ObservableCollection _Character; public ObservableCollection Character { get { return _Character; } set { _Character = value; } } private ObservableCollection _Item; public ObservableCollection Item { get { return _Item; } set { _Item = value; } } } 

角色类(以防万一): http : //pastebin.com/GFycKqDC

项目类别(以防万一): http : //pastebin.com/RgXzbFHk

这是RPG上的一个项目,你必须使用数据绑定combobox并为combobox创建一个ObservableCollection并查看每个角色。

我遇到的问题是:在我的combobox中,我希望能够用他们的“图像”和旁边的“图像”显示角色,他们的“级别”和“名称”

但我不希望它是静态的,我想创建一个字符列表并将ItemsSource绑定到我的ComboBox,这样无论我选择哪个字符,基于该字符的信息都会更新。 我该怎么做呢?

我被告知创建一个字符列表,然后为ComboBox项目创建一个数据模板,其中包含绑定到selectedItem的图片,名称和级别将完成工作(我称之为charList)但是我是否在代码中执行或者在XAML中,它会抛出一个exception,说明在绑定之前集合必须为空。

我想将datatemplate中的属性绑定到selectedItem,以便标签和信息将适当更新。

我做错了什么,为什么抛出这个exception?

编辑

好的,现在问题解决了! 但是,为什么我的Label绑定仍不适用于Character.Name和Character.Level?

http://puu.sh/aLPr7.jpg

编辑2 public MainWindow(){InitializeComponent(); Character.Add(新角色(“Bagi Warrior”)); Character.Add(新角色(“Azure Knight”)); this.Item = new ObservableCollection(); this.Character = new ObservableCollection();

  this.DataContext = this; //Character.Add(new Character(name: "Bagi Warrior", level: 197, characterClass: CharacterClass.Bagi_Warrior, gender: Gender.Male, strength: 450, intelligence: 4, dexterity: 84, gold: 147203352)); //Character.Add(new Character(name: "Azure Knight", level: 158, characterClass: CharacterClass.Azure_Knight, gender: Gender.Male, strength: 390, intelligence: 120, dexterity: 92, gold: 204220567)); //Character.Add(new Character(name: "Incar Magician", level: 169, characterClass: CharacterClass.Incar_Magician, gender: Gender.Female, strength: 4, intelligence: 512, dexterity: 57, gold: 172223520)); //Character.Add(new Character(name: "Vicious Summoner", level: 203, characterClass: CharacterClass.Vicious_Summoner, gender: Gender.Male, strength: 423, intelligence: 89, dexterity: 45, gold: 114225587)); } //public List charList //{ // get { return _charList; } // set { _charList = value; } //} private ObservableCollection _Character; public ObservableCollection Character { get { return _Character; } set { _Character = value; } } 

然后是XAML:

                     

您正在定义ItemsSource两次。

一旦使用

 ItemsSource="{Binding charList}" 

再一次

  

您将需要使用ComboBox.ItemTemplate替换ComboBoxItem元素,并为您的ComboxItem创建一个DataTemplate 。 然后,您将要将Image Source绑定到Character类的属性,或者使用ItemTemplateSelector让它为该项使用适当的DataTemplate 。 如果只有图像源位置发生变化,您还可以使用绑定到定义字符类的属性的数据触发器。