[英]Data Binding an observable collection of strings
我有以下課程:
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>
結果(和問題)是我在列表視圖中一次顯示了類名,而不是上面的兩個條目。
您首先需要將ListView
的ItemsSource
屬性設置為ObservableCollection
myListView.ItemsSource = myClass.MyList;
另外,您需要使用DataTemplate來顯示實際項目:
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock x:Name="DataItem" Text="{Binding}" />
</DataTemplate>
</ListView.ItemTemplate>
您正在綁定TextBlock,這就是為什么您會收到列表的.ToString()的原因。 您需要綁定的是列表的ItemsSource ,這樣ListView會將其項目與列表中的項目綁定。
可能這一個
myListView.DataContext = MyClass.MyList;
成為
myListView.DataContext = myClass.MyList; //note the case of myClass
它應該是
<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()
{
}
}
結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.