gpt4 book ai didi

wpf - 如何知道使用mvvm单击哪个treeview项

转载 作者:行者123 更新时间:2023-12-03 10:20:38 25 4
gpt4 key购买 nike

我有一个WPF MVVM应用程序,该应用程序的TreeView包含所有在XAML页中维护的静态项。我如何在 View 模型中知道单击了哪个MenuItem,以便可以相应地显示相应的页面。

    <TreeView Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="MyTreeViewMenu" 
VerticalAlignment="Stretch" Width="Auto" Opacity="1"
BorderThickness="1" BorderBrush="Black" Grid.Row="2">

<TreeViewItem Header="Country" Width="Auto" HorizontalAlignment="Stretch"
></TreeViewItem>

<TreeViewItem Header="View Details" Width="Auto" HorizontalAlignment="Stretch" IsEnabled="False">
<TreeViewItem Header="User" />
<TreeViewItem Header="Group" />
<TreeViewItem Header="User Group" />
</TreeViewItem>
</TreeView>

最佳答案

我想 Selected 事件在您的情况下将与click具有相同的效果。要确定选择了哪一个TreeViewItem,您应该添加事件Trigger:

<TreeView Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="MyTreeViewMenu" 
VerticalAlignment="Stretch" Width="Auto" Opacity="1"
BorderThickness="1" BorderBrush="Black" Grid.Row="2">

<TreeViewItem Header="Country" Width="Auto" HorizontalAlignment="Stretch"></TreeViewItem>
<TreeViewItem Header="View Details" Width="Auto" HorizontalAlignment="Stretch" IsEnabled="False">
<TreeViewItem Header="User" />
<TreeViewItem Header="Group" />
<TreeViewItem Header="User Group" />
</TreeViewItem>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedItemChanged">
<i:InvokeCommandAction
Command="{Binding selectItemCommand}"
CommandParameter="{Binding SelectedItem, ElementName=MyTreeViewMenu}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TreeView>

结果,您可以使用并确定由传递给 Command的参数选择了哪个项目。
ViewModel应该看起来像这样:
private ICommand _selectItemCommand;
public ICommand selectItemCommand
{
get
{
return _selectItemCommand ?? (_selectItemCommand = new RelayCommand(param => this.LoadPage(param)));
}
}

private void LoadPage(object selectedMenuItem)
{
...
}

关于wpf - 如何知道使用mvvm单击哪个treeview项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com