切换用户对树视图选择更改的控制
本文关键字:控制 选择 视图 用户 | 更新日期: 2023-09-27 17:54:11
如何根据树视图选择更改切换用户控件。我已经在ListBox上实现了这一点,但不知道如何用Wpf Treeview做到这一点。这是我的XAML代码。
<Window x:Class="MainScreen"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:viewModelSettings="clr-namespace:ViewModel.Settings" >
<Window.Resources>
<DataTemplate DataType="{x:Type viewModelSettings:BasicSettingsViewModel}">
<viewSettings:BasicSettingsView/>
</DataTemplate>
<DataTemplate DataType="{x:Type viewModelSettings:AdvancedSettingsViewModel}">
<viewSettings:AdvancedSettingsView/>
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<ListBox x:Name="ListBoxMenu"
Grid.Column="0" Margin="5,5,5,385"
ItemsSource="{Binding Settings}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Padding="10"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Border Grid.Column="1" Margin="5">
<ContentControl Content="{Binding ElementName=ListBoxMenu, Path=SelectedItem}"/>
</Border>
</Grid>
</Window>
我正在使用数据模板来定义各种视图模型和与它们绑定的视图
使它完全MVVM,这是我的代码后面
public partial class MainScreen : Window
{
public MainScreen()
{
InitializeComponent();
DataContext = new OptionsDialogViewModel();
}
}
//OptionsDialogViewModel Class
public class OptionsDialogViewModel : ViewModelBase
{
private readonly ObservableCollection<SettingsViewModelBase> _settings;
public ObservableCollection<SettingsViewModelBase> Settings
{
get { return this._settings; }
}
public OptionsDialogViewModel ()
{
_settings = new ObservableCollection<SettingsViewModelBase>();
_settings.Add(new BasicSettingsViewModel());
_settings.Add(new AdvancedSettingsViewModel());
}
}
//setingsviewmodelbase类
public abstract class SettingsViewModelBase : ViewModelBase
{
public abstract string Name { get; }
}
和现在我的ViewModel(s)是从这个SettingsViewModelBase
派生的public class AdvancedSettingsViewModel : SettingsViewModelBase
{
public override string Name
{
get { return "Advanced"; }
}
}
我现在有两个问题,这是做这项任务的正确方法吗?如何将列表视图切换到树视图
不幸的是,在树视图中选择项目并不像在列表框中选择项目那么简单。
与使用Content="{Binding ElementName=ListBoxMenu, Path=SelectedItem}"
简单地绑定到ListBox不同,绑定到树视图项涉及到一些代码隐藏。查看这里和这里的SO线程,了解更多关于how's和why's的讨论。