【发布时间】:2014-09-03 20:30:28
【问题描述】:
我知道这很简单,但我做不到。这将有助于理解 ItemsControl 中的 DataBinding。
我在 ScrollViewer 中有一个 ItemsControl。 ItemsControl 将用于更改存储在 OvservableCollection 设置中的子视图。
Settings 和 CurrentViewModel 都在主窗口的 ViewModel 中。在主视图模型中,我想通过更改 CurrentViewModel 来更改显示的内容。
如果我将 ObservableCollection、设置作为 ItemsControl 源,那么它可以遍历集合的每个项目——这不是我需要的。那么这是如何正确完成的呢?
我知道我会得到答案,但请告知。经过几个小时的谷歌,我无法解决这个问题。 (我希望我的问题很清楚)。提前致谢。
private SettingsViewModelBase currentViewModel;
public SettingsViewModelBase CurrentViewModel
{
get
{
return currentViewModel;
}
set
{
if (currentViewModel == value)
return;
currentViewModel = value;
OnPropertyChanged("CurrentViewModel");
}
}
private readonly ObservableCollection<SettingsViewModelBase> settings;
public ObservableCollection<SettingsViewModelBase> Settings
{
get { return this.settings; }
}
<ScrollViewer Grid.Row="2" Name="scrollviewer1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" >
<ItemsControl
ItemsSource="{Binding ????}"
>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type vm_1}"> <vm_1_View/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm_2}"> <vm_2_view/>
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding ?????" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
【问题讨论】:
-
你试过
{Binding Settings}吗?因为非常明显? -
@会的。没用。
标签: wpf mvvm data-binding itemscontrol