1

私は次のクラスを持っています:

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>

結果(および問題)は、上記の2つのエントリではなく、リストビューにクラス名が1回表示されることです。

4

4 に答える 4

6

ItemsSourceまず、のプロパティをに設定する必要がありListViewますObservableCollection

myListView.ItemsSource = myClass.MyList;

また、実際のアイテムを表示するには、 DataTemplateを使用する必要があります。

<ListView.ItemTemplate>
 <DataTemplate>
   <TextBlock x:Name="DataItem" Text="{Binding}" /> 
 </DataTemplate>
</ListView.ItemTemplate>
于 2012-09-14T16:23:56.363 に答える
1

TextBlockをバインドしているので、リストの.ToString()を受け取ります。バインドする必要があるのは、リストのItemsSourceです。これにより、ListViewはそのアイテムをリスト内のアイテムにバインドします。

于 2012-09-14T16:19:58.797 に答える
0

おそらくこれ

myListView.DataContext = MyClass.MyList;

になります

myListView.DataContext = myClass.MyList; //note the case of myClass
于 2012-09-14T16:22:05.360 に答える
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()
    {

    }
}

結果

ここに画像の説明を入力してください

于 2012-09-14T16:32:55.510 に答える