ObservableCollection - >列表框

时间:2009-11-02 08:16:19

标签: listbox observablecollection

我知道这已被多次问过不同的方式,但我只是没有得到它。为什么我在列表框中看不到我的测试字符串?

的.cs

 public partial class Window1 : Window
 {
    public ObservableCollection<string> myList = new ObservableCollection<string>();

    public Window1()
    {
        InitializeComponent();

        myList.Add("test1");
        myList.Add("test2");
    }
}

的.xaml

<Window x:Class="WpfApplication.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"
    x:Name="thisWindow">
    <Grid>
        <ListBox Name="MyListBox" ItemsSource="{Binding myList, ElementName=thisWindow}"/>
    </Grid>
</Window>

2 个答案:

答案 0 :(得分:4)

因为你的“myList”是一个字段。 WPF绑定仅适用于属性。将您的列表声明更改为:

private ObservableCollection<string> _myList = new ObservableCollection<string>();

public ObservableCollection<string> myList { get { return _myList; } }

答案 1 :(得分:1)

以这种方式尝试:

public Window1()
{
    InitializeComponent();

    myList.Add("test1");
    myList.Add("test2");

    this.DataContext = myList;
}

然后在XAML中:

<ListBox Name="MyListBox" ItemsSource="{Binding}"/>