簡體   English   中英

XAML中的WPF ListView綁定ItemsSource

[英]WPF ListView Binding ItemsSource in XAML

我有一個簡單的XAML頁面,其上有一個像這樣定義的ListView

<ListView Margin="10" Name="lvUsers" ItemsSource="{Binding People}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
            <GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
            <GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
        </GridView>
    </ListView.View>
</ListView> 

在我做的代碼中: -

public ObservableCollection<Person> People { get; set; }

public ListView()
{
    InitializeComponent();

    this.People = new ObservableCollection<Person>();
    this.People.Add(new Person() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });
    this.People.Add(new Person() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });
    this.People.Add(new Person() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" }); 

}   

如果我在后面的代碼中設置listview的ItemsSource,就像這樣

lvUsers.ItemsSource = this.People;

它工作,我的網格按預期顯示

但是,如果我刪除該行並嘗試綁定在XAML中

<ListView Margin="10" Name="lvUsers" ItemsSource="{Binding People}">

它不再有效。

為什么XAML中的綁定不起作用?

如果您還沒有這樣做,例如在XAML中,您需要為綁定設置DataContext 此外,由於People屬性未實現INotifyPropertyChanged您可能希望在InitializeComponent之前創建此列表,至少在設置DataContext之前,確保在評估綁定時列表已准備就緒。 您可以稍后添加到ObservableCollection但如果您在該點之后創建它而不通知UI它將無法工作

public ListView()
{
    this.People = new ObservableCollection<Person>();
    InitializeComponent();
    this.DataContext = this;

    this.People.Add(new Person() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });
    this.People.Add(new Person() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });
    this.People.Add(new Person() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" }); 
}

將此行放在xaml.cs中的現有代碼之后

this.DataContext = People;

並用。替換你的xaml

ItemsSource="{Binding People}" 

ItemsSource="{Binding}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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