相关疑难解决方法(0)

双击vs单击 - 这些是互斥的

任何人都可以命名一个应用程序的实例,其中点击一个实体(比如图像)做一件事,但如果你双击它会做一些不同的事情吗?

我能找到的唯一例子是双击iTunes中的曲目,然后选择它(单击功能),然后播放它(双击功能),这意味着(逻辑上)双击是超集(包含单击).

基本上,我被要求实现(在WPF中)单击图像单击做一件事和图像双击做另一件事我不确定这是否在概念上是正确的.

如果某人有一个明智地做这个的例子,那将是值得赞赏的吗?

wpf user-interface gui-designer

6
推荐指数
2
解决办法
6144
查看次数

在WPF中获取系统的双击计时器间隔(来自控制面板的值)

我有一个FrameworkElement,我希望在用户单击时执行操作A,在用户双击时执行操作B.

由于事件的传递方式,我总是得到一个单击事件,开始动作A.环顾四周后,我发现了一个有趣的技术,使用计时器来延迟点击的处理.但是,此示例将计时器硬编码为300毫秒,但我更喜欢使用用户的"双击速度"设置控制面板的鼠标属性对话框.

什么是从系统中获取该值的wpf/C#API?

wpf mouse controlpanel double-click

6
推荐指数
2
解决办法
6871
查看次数

如何使用线程来"勾选"其他线程访问的计时器?

当用户做某事(触摸StackPanel,在这种情况下),我需要开始某种类型的计时器(可能是DispatcherTimer,因为我在WPF中工作),如果在一定时间内再次发生另一次触摸,那么我我会叫一个方法.你可能猜到 - 这是实现双击功能.

我假设实现这一目标的最佳方法是使用线程(即子线程增加一个时间跨度,可以在任何时候再次触摸StackPanel时由主线程检查?)

谢谢,

c# wpf multithreading touch

2
推荐指数
1
解决办法
578
查看次数

在WPF DataGrid中实现编辑和双击(MouseDoubleClick)。

我已经用DataGrid编码了WPF UserControl。我添加了使用“单击编辑”来编辑一列(RecordingName)的功能(请参阅:我的代码和http://wpf.codeplex.com/wikipage?title=Single-Click%20Editing)。我还在处理整个DataGrid的MouseDoubleClick事件。

它的工作原理是……您可以肯定地编辑有问题的列(RecordingName),然后双击该列以外的任何地方,一切都很好。双击该列会出现问题。(对我来说)并不奇怪。您试图捕获双击,但同时也正在查看单击(通过PreviewMouseLeftButtonDown事件)。

我认为这是一个普遍的问题。有人可以建议我最好的处理方式吗?我绝对需要支持双击,但是也可以通过单击编辑来编辑RecordingName,这是很好的。

我还想通过右键单击RecordingName并选择重命名,然后使用F2选择它来支持编辑RecordingName。如果您转到Windows资源管理器,这就是您看到的行为。如果选择文件,然后在其上单击鼠标左键,则您处于编辑(重命名)模式。如果快速双击它,则文件将启动。如果右键单击或选择并单击F2,则可以对其进行重命名。

感谢您的帮助或想法。我粘贴了下面的代码。我确实尝试将其截断到最低限度。它仍然是很多代码。不管好坏,我都为控件本身使用了MVVM模型。

这是控件的xaml:

<UserControl x:Class="StackOverFlowExample.RecordingListControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
          xmlns:local="clr-namespace:StackOverFlowExample"
         mc:Ignorable="d" 

         d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
    <ResourceDictionary>

    <Style TargetType="{x:Type DataGridCell}">
        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="DataGridCell_PreviewMouseLeftButtonDown"></EventSetter>
    </Style>
        <Style x:Key="CellViewStyle" TargetType="{x:Type Label}" BasedOn="{StaticResource {x:Type Label}}">
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="ToolTip"
                        Value="{Binding RelativeSource={RelativeSource Self},
                                Path=(Validation.Errors)[0].ErrorContent}"/>
                <Setter Property="BorderBrush" Value="Red" />
                <Setter Property="BorderThickness" Value="1" />
            </Trigger>
        </Style.Triggers>
    </Style>



        <Style TargetType="{x:Type DataGrid}" >
        <Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:RecordingListControl}}, Path=Foreground}" />

            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
                </Trigger> …
Run Code Online (Sandbox Code Playgroud)

wpf events datagrid mvvm

2
推荐指数
1
解决办法
2480
查看次数