Wpf 如何使Left双击在整个treeviewitem区域工作,而不仅仅是在文本上?
我有一个树状视图,我使用一个ItemTemplate进行项目绑定,如下所示:Wpf 如何使Left双击在整个treeviewitem区域工作,而不仅仅是在文本上?,wpf,xaml,material-design-in-xaml,Wpf,Xaml,Material Design In Xaml,我有一个树状视图,我使用一个ItemTemplate进行项目绑定,如下所示: <TreeView ItemsSource="{Binding TreeViewItemCollection}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Children}"> <StackPanel Orientation=
<TreeView ItemsSource="{Binding TreeViewItemCollection}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<StackPanel.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding Command}" CommandParameter="{Binding CommandParameter}"></MouseBinding>
</StackPanel.InputBindings>
<TextBlock Text="{Binding Name}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></TextBlock>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
在Ui中,它看起来像这样:
现在,如果我双击文本,命令就会触发。当我双击灰色区域时,什么也没发生。我如何实现这种行为 定义一个ItemContainerStyle,用于拉伸内容并删除默认填充,然后将StackPanel放在一个元素中,将填充添加回:
<TreeView ItemsSource="{Binding TreeViewItemCollection}">
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem" BasedOn="{StaticResource MaterialDesignTreeViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
<Setter Property="Padding" Value="0" />
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<Border Background="Transparent" Padding="8">
<Border.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding Command}" CommandParameter="{Binding CommandParameter}" />
</Border.InputBindings>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock Text="{Binding Name}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></TextBlock>
</StackPanel>
</Border>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
在TreeViewItem的ControlTemplate中应用InputBinding:在哪里可以获得默认的控件模板?是否有类似于style.basedon属性的内容?您当前使用的样式/模板是什么?它看起来不像默认的。MaterialDesignInxalThemes。请在下次提问时说明这一点。看看我的答案,你的问题的解决方案。不幸的是仍然不起作用,但它看起来更好。到底是什么不起作用?你设置边界的背景了吗?实际上,您可以复制并粘贴我的示例。它对我有效,也就是说,当我在文本外单击时,命令被触发。好吧,这很奇怪,因为我几乎复制了你的代码。不幸的是,我的工作时间结束了。我明天再看一看。不,不幸的是它坏了。我也在一个单独的项目中进行了测试。我希望图片中的灰色区域是可单击的。我找到了一个解决方案,将treeviewitem的宽度属性设置为binding Actual width of Senior treeviewitem,并将border的宽度设置为binding width of Senior treeviewitem。问题是它的性能非常糟糕,所以我不能使用它