簡體   English   中英

數據綁定可觀察的字符串集合

[英]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>

結果(和問題)是我在列表視圖中一次顯示了類名,而不是上面的兩個條目。

您首先需要將ListViewItemsSource屬性設置為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM