WPF禁用或检测CardView空白区域?

时间:2017-06-17 09:13:12

标签: c# wpf cardview

我正在使用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>

enter image description here

我看到了一些像我这样的问题,但它的目标是ListView或TreeView,CardView的项目没有相应的类,如ListBoxItemTreeViewItem

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?

所以我不能使用这个解决方案,任何人都可以告诉我如何解决这个问题,谢谢!

1 个答案:

答案 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 .../>