我有一个ListView
绑定到名为ObservableCollection
的{{1}}
GunsCollection
当我在<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>
的构造函数中创建GunsCollection
的实例时,我的ListView没有显示任何内容,并且为空。
MainWindow
但是,当我在其声明的同一行上创建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
为什么会这样?
答案 0 :(得分:0)
在第一个示例中,在构造函数执行后,用数据填充的 GunsCollection 将不再存在。您已经创建了一个新变量,该变量与您的class属性无关(即使它具有相同的名称)。
答案 1 :(得分:0)
显示的第一个示例是创建一个新的局部变量,而不是将其分配给绑定到视图的公共集合。
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