数据绑定可观察的字符串集合

时间:2012-09-14 16:16:59

标签: c# xaml windows-8 windows-runtime .net-4.5

我有以下课程:

public class MyClass
{
    public ObservableCollection<string> MyList { get; set; }
    public string MyListTitle { get; set; }
...

我填写如下:

MyClass myClass = new MyClass("Data"); // Populates title

myClass.MyList.Add("Test data 1");
myClass.MyList.Add("Test data 2");

myListView.DataContext = MyClass.MyList;

最后,这是XAML:

<ListView Visibility="Visible" x:Name="myListView" Height="Auto">
    <ScrollViewer x:Name="contentScrollView">
        <TextBlock x:Name="DataItem" Text="{Binding}" />                                
    </ScrollViewer>
</ListView>

结果(和问题)是我在列表视图中显示一次类名,而不是上面的两个条目。

4 个答案:

答案 0 :(得分:4)

首先需要将ItemsSource的{​​{1}}属性设置为ListView

ObservableCollection

此外,您需要使用DataTemplate来显示实际项目:

myListView.ItemsSource = myClass.MyList;

答案 1 :(得分:1)

您正在绑定TextBlock,这就是您收到列表的.ToString()的原因。您需要绑定的是列表的ItemsSource,这样ListView会将其项目与列表中的项目绑定。

答案 2 :(得分:0)

可能是这个

myListView.DataContext = MyClass.MyList;

应该成为

myListView.DataContext = myClass.MyList; //note the case of myClass

答案 3 :(得分:0)

应该是

<ListView x:Name="myListView" Height="Auto" ItemsSource="{Binding MyList}">            
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock x:Name="DataItem" Text="{Binding}" />
            </DataTemplate>
        </ListView.ItemTemplate>            
    </ListView>

MyClass myClass = new MyClass();

        myClass.MyList = new ObservableCollection<string>();
        myClass.MyList.Add("Test data 1");
        myClass.MyList.Add("Test data 2");

        this.DataContext = myClass;

public class MyClass
{
    public ObservableCollection<string> MyList { get; set; }
    public string MyListTitle { get; set; }

    public MyClass()
    {

    }
}

结果

enter image description here