我是WPF的新手。我已经使用WPF中的树视图创建了一个静态菜单。但左菜单单击事件未触发。我有以下代码。
<UserControl x:Class="navigationApp.dashboard"
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:navigationApp"
mc:Ignorable="d"
d:DesignHeight="650" d:DesignWidth="1120">
<Grid >
<TreeView>
<TreeViewItem Header="Dashboard" Name="menuDashboard" MouseLeftButtonDown="menuDashboard_MouseLeftButtonDown"/>
<TreeViewItem Header="Customer">
<TreeViewItem Header="Customer Listing" Name="menuCustomerList" MouseLeftButtonDown="menuCustomerList_MouseLeftButtonDown"/>
<TreeViewItem Header="Add New Customer" Name="menuCustomerReg" MouseLeftButtonDown="menuCustomerReg_MouseLeftButtonDown"/>
</TreeViewItem>
<TreeViewItem Header="Settings"/>
</TreeView>
</Grid>
</UserControl>是否需要额外的代码?
发布于 2018-08-20 20:24:08
您可以使用单个SelectedItemChanged事件处理程序:
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
TreeViewItem clickedTreeViewItem = e.NewValue as TreeViewItem;
//...
}XAML:
<TreeView SelectedItemChanged="TreeView_SelectedItemChanged">
<TreeViewItem Header="Dashboard" Name="menuDashboard" />
<TreeViewItem Header="Customer">
<TreeViewItem Header="Customer Listing" Name="menuCustomerList" />
<TreeViewItem Header="Add New Customer" Name="menuCustomerReg" />
</TreeViewItem>
<TreeViewItem Header="Settings"/>
</TreeView>发布于 2022-02-24 04:47:30
如果TreeViewItem是可聚焦的,则该事件将被消费。您可以注册一个全局事件处理程序以再次转发事件。
static MyClass()
{
EventManager.RegisterClassHandler(typeof(TreeViewItem),
Mouse.PreviewMouseDownEvent,
new MouseButtonEventHandler(OnMouseButtonDown), true);
}So...Just捕获事件并重新发送。在这里,我将转发到它的父TreeView。
private static void OnMouseButtonDown(object sender, MouseButtonEventArgs e)
{
var tvi = sender as TreeViewItem;
var parentTree = tvi.GetParent<TreeView>();
var eventArgs = new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, e.ChangedButton)
{
RoutedEvent = UIElement.MouseDownEvent,
Source = sender
};
parentTree.RaiseEvent(eventArgs);
e.Handled = false;
}https://stackoverflow.com/questions/51927470
复制相似问题