【发布时间】:2015-09-10 12:49:52
【问题描述】:
想象一下 WPF 中的Tabber 具有多个标签页。现在我想使用TreeView 进行导航,而不是 TabPages。
TreeView 在内容页面之间切换,无需删除和重新创建它们。
这是如何实现的?
还应该有一个带有隐藏标签页的Tabber 还是有不同的方法?实现这一目标的规范方法是什么?
【问题讨论】:
标签: c# wpf navigation
想象一下 WPF 中的Tabber 具有多个标签页。现在我想使用TreeView 进行导航,而不是 TabPages。
TreeView 在内容页面之间切换,无需删除和重新创建它们。
这是如何实现的?
还应该有一个带有隐藏标签页的Tabber 还是有不同的方法?实现这一目标的规范方法是什么?
【问题讨论】:
标签: c# wpf navigation
我在许多应用程序中都使用过它,并且似乎是正确的并且非 MVVM 破坏。也许这就是您正在寻找的:
public class ShellViewModel : INotifyPropertyChanged
{
private ICommand _changeViewModelCommand;
private object _currentViewModel;
private List<object> _viewModels = new List<object>();
public ShellViewModel()
{
ViewModels.Add(new HomeViewModel());
CurrentViewModel = ViewModels[0];
}
private void ChangeViewModel(object viewModel)
{
if (!ViewModels.Contains(viewModel))
ViewModels.Add(viewModel);
CurrentViewModel = ViewModels.FirstOrDefault(vm => vm == viewModel);
}
}
还有观点:
<Grid Margin="20">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Header -->
<TextBlock Text="Application Name" FontWeight="Bold" FontSize="24" />
<Line Grid.Row="1" Stroke="Black" Margin="0,5" StrokeThickness="1" Stretch="Fill" X2="1" />
<!-- Content -->
<ContentControl Grid.Row="2" Content="{Binding CurrentViewModel}"/>
</Grid>
我知道这不是使用 TreeView,但也许它会满足您的需求。希望对您有所帮助。
【讨论】:
ContentControl.Content 可以绑定到代码后面的UserControl 吗?