簡體   English   中英

WPF ListView與ObservableCollection的綁定問題

[英]WPF ListView Binding issues with ObservableCollection

我有一個ListView綁定到名為GunsCollectionObservableCollection

<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.

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