WPF, ObservableCollection и listbox - PullRequest
       0

WPF, ObservableCollection и listbox

0 голосов
/ 13 сентября 2010

У меня следующий код

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 голосов
/ 13 сентября 2010

Сначала установите 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" />

Вот и все.Это должно решить вашу проблему.

0 голосов
/ 13 сентября 2010

Если вы хотите отобразить только строковое свойство элемента, используйте DisplayMemberPath в ListBox.

В противном случае используйте ItemTemplate, для которого вы можете установить DataTemplate, который определяет, как выглядит каждый из ваших элементовкак и может быть любой сложности (то есть может включать в себя другие элементы управления).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...