【问题标题】:WPF Disable or Detect CardView Empty Space Click?WPF禁用或检测CardView空白空间点击?
【发布时间】:2017-06-17 18:50:04
【问题描述】:

我正在使用 WPF 的 CardView,添加 MouseDoubleClick 处理程序来处理项目单击事件,但问题是当我单击空白区域时:卡外区域,它也会调用事件,这不是我的想要,所以我想检测click事件不在card item上,或者只是禁用这个事件来调用双击处理程序。

<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的一个item没有对应的类,比如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?

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

【问题讨论】:

    标签: c# wpf cardview


    【解决方案1】:

    您遇到的问题是您正在将您的 MouseDoubleClick 事件添加到整个 CardView 中,但因为它有一个触发 MouseDoubleClick 事件的边距。

    要解决您的问题,您需要将MouseDoubleClick 事件应用到您感兴趣的CardView 部分。在没有访问源代码的情况下,您可以这样做的一种方法是删除边距,应用你的 MouseDoubleClick 事件到 CardView ,然后如果这是你想要的,然后添加一个边距。这个post 建议像这样删除边距

    重新定义卡片模板

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

    【讨论】:

    • 我认为问题不仅仅是margin的问题。考虑这种情况:第一行​​有4个卡项,第二行有1个卡项,如果我们点击第二行,甚至没有单击唯一的一个卡项,它也会调用双击,这个问题不能通过你的解决方案来解决。所以我想知道是否有一种解决方案只能在我单击卡片视图项时执行单击事件,而不是边距,而不是任何其他空白空间。
    猜你喜欢
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    相关资源
    最近更新 更多