我有一个包含可观察集合属性的视图模型:
public ObservableCollection<ExplorerPane> Panes { get; set; } = new ObservableCollection<ExplorerPane>();
在与我的视图模型相对应的用户控件中,我使用Panes
作为ItemsSource
的{{1}},而仅使用ItemsControl
来显示每个内容ContentPresenter
:
ExplorerPane
问题在于,我希望内容演示者将其窗格彼此呈现为 ,以便一次只能看到一个窗格。
然后我的问题是如何使内容演示者位于网格的同一单元格中?
答案 0 :(得分:1)
使用网格作为ItemsPanel:
<ItemsControl ItemsSource="{Binding Panes}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
不需要ItemTemplate,因为ItemsControl已经使用ContentPresenter作为项目容器。
但是,如果只想显示一个ExplorerPane,请向视图模型中添加一个CurrentPane
属性,并通过
<ContentControl Content={Binding CurrentPane}"/>