不使用mvvm的ListView项目源绑定

时间:2019-01-10 19:48:24

标签: wpf listview data-binding

 public MainWindow()
    {
        InitializeComponent();

        listView1.ItemsSource = myData; // myData is not ObservableCollection 
    }


    private void AddData_ButtonClick(object sender, RoutedEventArgs e)
    {
        myData.Add(/*adding new item*/);
        listView1.Items.Refresh();
    }

和xml代码:

 <ListView x:Name="listView1" ItemsSource="{Binding}">
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding Name}"  Header="File Name"/>
                    <GridViewColumn DisplayMemberBinding="{Binding NumOfPoints}" Header="Points"/>
                </GridView>
            </ListView.View>
  </ListView>

它运作良好,我只是想改善我的代码。例如删除Items.Refresh()方法并改善绑定。 我是wpf的新手,正在寻求最佳实践建议,而我暂时不加入mvvm。 任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

myData必须是ObservableCollection<T>或实现INotifyCollectionChanged界面的任何其他类型,以便您能够查看ListView中添加的项而不必显式重置或刷新其项目集合。这就是ObservableCollection<T>类存在的原因。

因此,您必须将文件类型从List<SDRFile>更改为ObservableCollection<SDRFile>