[英]Why is my ListView not binding to the ItemSource?
所以我有一個非常簡單的UI設計,帶有ListView和一個按鈕。 我想在點擊按鈕時填充列表視圖。
<Grid>
<Button Click="ButtonBase_OnClick" Content="Button" HorizontalAlignment="Left" Margin="349,259,0,0" VerticalAlignment="Top" Width="75"/>
<ListView Margin="10,10,10,202" Name="lvUsers" ItemsSource="{Binding SomeData.Users}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
我已綁定ListView控件的屬性的ItemSource是SomeData.Users
這是一個ObservableCollectiuon時,它的更新,應通知用戶界面,添加,刪除或更新。 然后在我有列的下面我將DisplayMember綁定到observable集合的Name
屬性。
這是SomeData
類
public class SomeData
{
public static ObservableCollection<User> Users { get; } = new ObservableCollection<User>();
public static void Populate()
{
Users.Add(new User() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });
Users.Add(new User() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });
Users.Add(new User() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" });
}
}
public class User
{
public string Name { get; set; }
public int Age { get; set; }
public string Mail { get; set; }
}
這是MainWindow.cs
public MainWindow()
{
InitializeComponent();
}
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
SomeData.Populate();
}
afaik我不應該在任何地方設置DataContext ..對嗎?
問題是您的Binding語法錯誤。 您正在嘗試綁定到靜態屬性,請嘗試以下操作:
"{Binding Source={x:Static YourNameSpace:SomeData.Users}}"
或者,如果您使用的是WPF 4.5或更高版本:
"{Binding Path=(YourNameSpace:SomeData.Users)}"
一個提示:像你這樣的問題總是試着看看你的輸出窗口並查找System.Window.Data Error
,這些通常是綁定表達式無法解析時發生的綁定異常。 在你的情況下,我相信你會發現這個例外。
您必須為xaml設置DataContext。
將datacontext添加到mainwindow
public MainWindow()
{
InitializeComponent();
this.DataContext = new SomeData();
}
並將xaml ItemsSource綁定更改為
ItemsSource="{Binding Users}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.