【发布时间】:2021-12-22 05:59:56
【问题描述】:
我有一个TreeView,其中包含不同级别的TreeViewItem。
下面完美运行:
<TreeViewItem Tag="Link" MouseDoubleClick="TreeViewItem_MouseDoubleClick">
<TreeViewItem.Header>
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="Link" Margin="0 0 5 0"/>
<TextBlock Text="Link"/>
</StackPanel>
</TreeViewItem.Header>
</TreeViewItem>
但是,当他们有 TreeViewItem.Header 时,我无法正确设置 MouseDoubleClick 事件,请参见下文:
<TreeViewItem IsExpanded="True" MouseDoubleClick="TreeViewItem_MouseDoubleClick">
<TreeViewItem.Header>
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="HelpCircleOutline" Margin="0 0 5 0"/>
<TextBlock Text="Help" FontWeight="Bold"/>
</StackPanel>
</TreeViewItem.Header>
<ContentControl>
<StackPanel Orientation="Horizontal">
<materialDesign:PackIcon Kind="BookOpenOutline" Margin="0 0 5 0"/>
<TextBlock Text="Technical Guide"/>
</StackPanel>
</ContentControl>
</TreeViewItem>
上面的问题是它同时在帮助标题和技术指南子项上触发。
我无法将事件添加到 <StackPanel>,因为它不支持它,所以我用 <ContentControl> 包装它并尝试将事件添加到其中,但它似乎根本没有触发。
有没有什么方法可以让“技术指南”触发事件,但也可以根据第一个代码 sn-p 添加Tag="" 属性,因为我正在检查TreeViewItem_MouseDoubleClick 事件中的值?
编辑
根据要求为MouseDoubleClick 事件提供代码:
private void TreeViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (sender is TreeViewItem item)
{
var header = item.Tag as string;
switch (header)
{
case "Link":
//Open new window code
break;
}
}
【问题讨论】:
-
你能显示你的事件双击代码吗?或者更好的是你有我可以下载你的项目的地方吗?
-
@Frenchy 查看已编辑的问题 :)
-
我需要查看您的完整 xaml 文件以重现您遇到的问题,
-
@Frenchy 该页面仅包含
TreeView和 XAML 可以在今天早些时候的这个问题上找到:stackoverflow.com/questions/69898323/…
标签: c# wpf events treeview treeviewitem