【发布时间】:2011-04-11 11:28:06
【问题描述】:
下面的代码sn-ps有什么区别吗?
我正在使用 VS 2010、.NET 4、WPF
代码片段 1:
代码片段 2:
【问题讨论】:
标签: wpf visual-studio-2010 listview
下面的代码sn-ps有什么区别吗?
我正在使用 VS 2010、.NET 4、WPF
代码片段 1:
代码片段 2:
【问题讨论】:
标签: wpf visual-studio-2010 listview
有一个非常大的区别。
在第一个场景中,你是binding to the listEPutAway collection。这意味着如果集合实现了INotifyCollectionChanged,对它的任何更改都会自动反映在绑定到它的控件中。
当然,在这个具体的例子中,List(究竟是哪个类?)可能没有实现这个接口。通常在绑定时,出于这个特定原因,您选择绑定到 ObservableCollection<T>。
在第二种情况下,您手动将项目列表提供给控件。然后,控件中的数据完全独立于您的应用程序中可能发生的任何其他事情。
WPF 的主要吸引力之一是专门支持数据绑定,因此“WPF 方式”是第一个场景(并且也在 XAML 中声明绑定)。
作为旁注,您应该记住,不能同时使用Items(手动填充)和ItemsSource(数据绑定)。
【讨论】:
INotifyCollectionChanged。我想在单击按钮时生成一个 ListView。当我第一次单击按钮时它工作正常(对于代码片段 1 和 2)但是当我第二次单击按钮时,如果我在按钮的 Click 事件中使用代码片段 2,则会出现“NullReferenceException”异常。从这个角度看有什么区别。
null 是哪个值?),否则无法确定。作为一般说明:所有 场景,包括您的场景,都可以构建为使用数据绑定而不是直接的过程代码。这只是习惯它的问题。我会知道,因为当我第一次接触 WPF 时,我也遇到了同样的情况。