![](/img/trans.png)
[英]WPF, ObservableCollection/BindingList binding to ListView
[英]WPF ListView Binding issues with ObservableCollection
我有一個ListView
綁定到名為GunsCollection
的ObservableCollection
<Grid>
<ListView x:Name="lstView" Height="300" ItemsSource="{Binding GunsCollection}">
<ListView.View>
<GridView>
<GridViewColumn Header="Gun Name" Width="120" DisplayMemberBinding="{Binding ModelName}"/>
<GridViewColumn Header="Price" Width="120" DisplayMemberBinding="{Binding UnitCost}"/>
</GridView>
</ListView.View>
</ListView>
當我在MainWindow
的構造函數中創建GunsCollection
實例時,我的ListView不顯示任何內容,並且為空。
public partial class MainWindow : Window
{
public ObservableCollection<Gun> GunsCollection { get; set; }
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
var GunsCollection = new ObservableCollection<Gun>() // doesn't work!
{
new Gun() {ModelName = "AK-47", UnitCost = 2700 },
new Gun() {ModelName = "M4A4", UnitCost = 3100 },
};
}
}
但是,當我在其聲明的同一行上創建GunsCollection
實例時, ListView
可以工作並顯示其中包含的所有項目。
public partial class MainWindow : Window
{
public ObservableCollection<Gun> GunsCollection { get; set; } = new ObservableCollection<Gun>();
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
GunsCollection.Add(new Gun() { ModelName = "AK-47", UnitCost = 2700 });
GunsCollection.Add(new Gun() { ModelName = "M4A4", UnitCost = 3100 });
}
}
為什么會這樣呢?
在您的第一個示例中,在構造函數執行后,用數據填充的GunsCollection將不再存在。 您已經創建了一個新變量,該變量與您的class屬性無關(即使它具有相同的名稱)。
顯示的第一個示例創建了一個新的局部變量,並且未將其分配給綁定到視圖的公共集合。
public partial class MainWindow : Window
{
public ObservableCollection<Gun> GunsCollection { get; set; }
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
GunsCollection = new ObservableCollection<Gun>()
{
new Gun() {ModelName = "AK-47", UnitCost = 2700 },
new Gun() {ModelName = "M4A4", UnitCost = 3100 },
};
}
}
刪除var
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.