我正在使用WPF的CardView,添加MouseDoubleClick处理程序来处理项目点击事件,但问题是当我点击空白区域时:卡片区域外,它也会调用该事件,这不是我的意思想要,所以我想检测点击事件不在卡片项目上,或者只是禁用此事件来调用双击处理程序。
<dxg:CardView ShowTotalSummary="False" ShowGroupPanel="False" SeparatorThickness="0" ShowFilterPanelMode="Never" FilterEditorShowOperandTypeIcon="False"
CardLayout="Rows" MaxCardCountInRow="5" ShowCardExpandButton="False" ShowGroupedColumns="False"
MouseDoubleClick="cvPros_MouseDoubleClick">
</dxg:CardView>
我看到了一些像我这样的问题,但它的目标是ListView或TreeView,CardView的项目没有相应的类,如ListBoxItem
,TreeViewItem
:
WPF; How to Deselect all my selected items when clicking on empty space in my ListView
WPF Treeview how to handle mouse clicks in F Treeview but not on a treeviewitem?
所以我不能使用这个解决方案,任何人都可以告诉我如何解决这个问题,谢谢!
答案 0 :(得分:1)
您遇到的问题是,您将MouseDoubleClick
事件添加到整个CardView
,但因为它有一个触发MouseDoubleClick
事件的保证金。
要解决您的问题,您需要将MouseDoubleClick
事件应用于您感兴趣的CardView
部分。如果您无法访问源代码,则可以执行此操作保证金,将MouseDoubleClick
事件应用于CardView
,然后在事后添加保证金,如果这是你想要的。这个post建议删除这样的边距
重新定义CardTemplate
<dxg:CardView.CardTemplate>
<DataTemplate>
<Border Margin="-11">
<TextBlock Background="Red" Height="50" Width="50"/>
</Border>
</DataTemplate>
</dxg:CardView.CardTemplate>
重新定义x:Key="{dxgt:GridCardThemeKey ResourceKey=ContentPresenterStyle}"
<Style x:Key="{dxgt:GridCardThemeKey ResourceKey=ContentPresenterStyle, IsThemeIndependent=True}" TargetType="{x:Type dxg:GridCardContentPresenter}">
<Setter Property="Margin" Value="0" />
</Style>
然后,您可以像这样使用CardView
<CardView MouseDoubleClick="MyMouseDoubleClick" Margin="10">
或者,你可以将它全部嵌入到像这样的新UserControl
中
<UserControl>
<Grid Margin="10" >
<CardView MouseDoubleClick="MyMouseDoubleClick" Margin="10">
</Grid>
</UserControl>
然后你可以像这样使用它
<MyCardView .../>