0

我正在尝试将一个简单的树结构绑定到 Win 8(以前称为)Metro 应用程序中的 ItemsControl 的 itemsSource。我的结构实现了 INotifyPropertyChanged 接口,并在它的任何子项发生更改时发出通知。

我尝试制作一个转换器,将我的树展平为 ObservableCollection,但在创建绑定后,它不会刷新。

我做了以下测试项目来展示我想要什么: https ://skydrive.live.com/redir?resid=970FFC53F4B7A598!146

这个简单项目中的问题是,如果您按下底部应用栏上的“添加”按钮,它会在层次结构中创建一个新的子级,但 ListView 不会刷新。

我想念什么,或者我该怎么做?

4

1 回答 1

2

使用 a 应该相当简单DataTemplate,例如

<DataTemplate DataType="{x:Type local:TreeItemType}">
    <StackPanel>
        <ContentPresenter Content="{Binding Name}"/>
        <ItemsControl ItemsSource="{Binding Children}"/>
    <StackPanel>
<DataTemplate>

通过ItemsControl.Resources( 所以它也被应用到内部ItemsControl


如果您只是想要叶子或对不是单个单元的项目提出问题,则可以构造 a CompositeCollection,而不是创建一个ObservableCollection永远不会修改的转换器,因为只有视图具有对它的引用,您可以通过CollectionContainers通知包装原始集合将被保留。

于 2012-08-31T14:33:50.643 回答