我猜你有的ViewModels和視圖定義,所以我提出的解決方案,而不是TreeView控件我使用列表框, 在主窗口,
<Grid>
<Grid.Resources>
<DataTemplate DataType="{x:Type my:AdvancedViewModel}">
<view:AdvancedView/>
</DataTemplate>
<DataTemplate DataType="{x:Type my:RegularViewModel}">
<view:RegularView/>
</DataTemplate>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListBox ItemsSource="{Binding ViewModels}" SelectedItem="{Binding SelectedViewModel}" Grid.Column="0"/>
<ContentControl Content="{Binding SelectedViewModel}" Grid.Column="1"/>
</Grid>
在這裏,我使用的一些看法和視圖模型例如目的,
您的看法, 首先查看
<UserControl x:Class="WpfApplication5.RegularView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfApplication5"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<TextBlock Text="Fom Regular"/>
</Grid>
第二種觀點
<UserControl x:Class="WpfApplication5.AdvancedView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfApplication5"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<TextBlock Text="From Advanced"/>
</Grid>
,你MainViewModel只能是這樣,
public class MainViewModel
{
private ObservableCollection<ViewModelBase> viewModels;
public ObservableCollection<ViewModelBase> ViewModels
{
get { return viewModels; }
set { viewModels = value; }
}
private ViewModelBase selectedViewModel;
public ViewModelBase SelectedViewModel
{
get { return selectedViewModel; }
set { selectedViewModel = value; }
}
public MainViewModel()
{
ViewModels = new ObservableCollection<ViewModelBase>();
ViewModels.Add(new RegularViewModel());
ViewModels.Add(new AdvancedViewModel());
SelectedViewModel = ViewModels[0];
}
}
public class ViewModelBase
{
}
public class RegularViewModel : ViewModelBase
{
}
public class AdvancedViewModel : ViewModelBase
{
}
謝謝你的快速響應。好吧,你創建一個新的用戶控件,而不是一個頁面。這不是我正在尋找的,但我現在就試一試。 – Kleisophabo
這是一個概念,你可以試試你想要的控件。 – WPFUser
現在我沒有理解這個概念!以及我正在尋找的。謝謝你的回答:D。我對常規觀點和高級觀點感到困惑。我現在完成了作業。 :) – Kleisophabo