WPF,ObservableCollection和列表框

时间:2010-09-13 09:26:25

标签: c# wpf

我有以下代码

private static ObservableCollection<myColor> myItems = new ObservableCollection<myColor>();
myItems.Add(new myColor("red"));

当对象myColor是这个类时

public class myColor
{
    public string color { get; set; }
    public myColor(string col)
    {
        this.color = col;
    }
}

当我尝试在列表框中显示项目时,麻烦就是

<ListBox Margin="12,52,12,12" Name="listBox1" ItemsSource="{Binding}" />

它只显示“myColor”对象而不是“color”变量。如何显示此对象的变量?

2 个答案:

答案 0 :(得分:0)

如果您只想在ListBox上显示项目的字符串属性,请使用DisplayMemberPath

否则使用ItemTemplate,您可以将其设置为DataTemplate,它定义您的每个项目的外观,并且可以具有任何复杂性(即可以包含其他控件)。

答案 1 :(得分:0)

首先为窗口设置DataContext,如下所示:

        public Window1()
        {
            InitializeComponent();

            myItems.Add(new myColor("red"));
            myItems.Add(new myColor("green"));

            //Set the DataContext for the window
            this.DataContext = myItems;
        }

现在将XAML更改为:

<ListBox Margin="12,52,12,12" Name="listBox1" ItemsSource="{Binding}" DisplayMemberPath="color" />

这就是全部。它应该可以解决你的问题。