- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么 IsMouseOver 被识别为 WPF 样式触发器而 MouseDown 不是 - 鉴于两者都是有效的 UIElement 属性,如 seen here -.第一个触发器运行良好,但第二个触发器甚至无法编译。
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush >
<GradientStop Color="Transparent" Offset="0"/>
<GradientStop Color="Black" Offset="0.5"/>
<GradientStop Color="Transparent" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="MouseDown" Value="true">
<Setter Property="OpacityMask">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="White" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
最佳答案
好吧,我猜你误会了 MouseDown
属性(property)事件。没有IsMouseDown
属性但存在类似的 IsPressed
属性,但仅适用于继承的类 ButtonBase
.如果您想保持代码隐藏干净,您应该只在代码隐藏中使用事件或编写附加属性。
这就是你如何做到的。创建类:
using System;
using System.Windows;
namespace Mrpyo
{
public static class MouseDownHelper
{
public static readonly DependencyProperty IsEnabledProperty = DependencyProperty.RegisterAttached("IsEnabled",
typeof(bool), typeof(MouseDownHelper), new FrameworkPropertyMetadata(false, new PropertyChangedCallback(OnNotifyPropertyChanged)));
public static void SetIsEnabled(UIElement element, bool value)
{
element.SetValue(IsEnabledProperty, value);
}
public static bool GetIsEnabled(UIElement element)
{
return (bool)element.GetValue(IsEnabledProperty);
}
private static void OnNotifyPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var element = d as UIElement;
if (element != null && e.NewValue != null)
{
if ((bool)e.NewValue)
{
Register(element);
}
else
{
UnRegister(element);
}
}
}
private static void Register(UIElement element)
{
element.PreviewMouseDown += element_MouseDown;
element.PreviewMouseLeftButtonDown += element_MouseLeftButtonDown;
element.MouseLeave += element_MouseLeave;
element.PreviewMouseUp += element_MouseUp;
}
private static void UnRegister(UIElement element)
{
element.PreviewMouseDown -= element_MouseDown;
element.PreviewMouseLeftButtonDown -= element_MouseLeftButtonDown;
element.MouseLeave -= element_MouseLeave;
element.PreviewMouseUp -= element_MouseUp;
}
private static void element_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
var element = sender as UIElement;
if (element != null)
{
SetIsMouseDown(element, true);
}
}
private static void element_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
var element = sender as UIElement;
if (element != null)
{
SetIsMouseLeftButtonDown(element, true);
}
}
private static void element_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
var element = sender as UIElement;
if (element != null)
{
SetIsMouseDown(element, false);
SetIsMouseLeftButtonDown(element, false);
}
}
private static void element_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
var element = sender as UIElement;
if (element != null)
{
SetIsMouseDown(element, false);
SetIsMouseLeftButtonDown(element, false);
}
}
internal static readonly DependencyPropertyKey IsMouseDownPropertyKey = DependencyProperty.RegisterAttachedReadOnly("IsMouseDown",
typeof(bool), typeof(MouseDownHelper), new FrameworkPropertyMetadata(false));
public static readonly DependencyProperty IsMouseDownProperty = IsMouseDownPropertyKey.DependencyProperty;
internal static void SetIsMouseDown(UIElement element, bool value)
{
element.SetValue(IsMouseDownPropertyKey, value);
}
public static bool GetIsMouseDown(UIElement element)
{
return (bool)element.GetValue(IsMouseDownProperty);
}
internal static readonly DependencyPropertyKey IsMouseLeftButtonDownPropertyKey = DependencyProperty.RegisterAttachedReadOnly("IsMouseLeftButtonDown",
typeof(bool), typeof(MouseDownHelper), new FrameworkPropertyMetadata(false));
public static readonly DependencyProperty IsMouseLeftButtonDownProperty = IsMouseLeftButtonDownPropertyKey.DependencyProperty;
internal static void SetIsMouseLeftButtonDown(UIElement element, bool value)
{
element.SetValue(IsMouseLeftButtonDownPropertyKey, value);
}
public static bool GetIsMouseLeftButtonDown(UIElement element)
{
return (bool)element.GetValue(IsMouseLeftButtonDownProperty);
}
}
}
<Setter Property="local:MouseDownHelper.IsEnabled" Value="True"/>
<Style.Triggers>
<Trigger Property="local:MouseDownHelper.IsMouseLeftButtonDown" Value="True">
<!-- ... -->
</Trigger>
</Style.Triggers>
xmlns:local="clr-namespace:Mrpyo"
关于wpf - 为什么 IsMouseOver 被识别而 MouseDown 不是(Wpf 样式触发器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10667545/
当我使用 resharper 时,他总是说 有什么区别? 任何细节都会很好 谢谢大家。 最佳答案 较短的语法已在 C# 2.0 中引入,它只是较长形式的语法糖。 无论你写什么,结果总是一样的。但是,更
我需要在网页中捕获一些数据,然后用户创建 mousedown 事件或在用户按页面元素上的 TAB 键时模拟它。对于 mousedown 我使用标准代码,例如: $('*').on('mousedown
我有一个 html 表格,其中包含拖放列、可调整大小的行以及根据 mousedown、mousemove 和 mouseup 进行更改的可调整大小的列。为了获得更好的性能,我应该让文档在鼠标移动期间不
所以我还没有开始写这些,所以为了清楚起见,我会尽我最大的努力把一些伪代码放在一起——但这里的想法是用户会点击并按住一个“按钮” (最终可能不会成为一个实际的按钮),然后生成一个可移动的 DIV。一旦创
如何在 JQuery 中创建鼠标按下并移动时触发的事件?并且每次 mousedown + mousemove 只触发一次? 最佳答案 更新: 因此,看起来如果您的鼠标不再位于绑定(bind) onmo
我正在使用 NSView 进行拖放操作。 在要拖动的对象(NSView 的子类)中,我实现了 mouseDown: 方法,如下所示: @try { NSPoint location;
我有一个包含 2 个事件的 TPanel: procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shif
我的应用程序一直表现不佳。在删除越来越多的代码后,我设法找到了问题的核心,但这对我来说毫无意义。 一点背景。我的网络编辑器应用程序对击键使用react,例如当按下 Alt 时,调整大小的处理程序将被隐
我希望按钮在单击时更改其颜色(鼠标按下时颜色较深,鼠标松开时原始颜色)并且它可以工作,但仅在第二次单击时有效。这是为什么?我该如何解决这个问题? 按钮 ID 为 1 到 10(按钮 1、按钮 2...
这个问题已经有答案了: Event binding on dynamically created elements? (23 个回答) 已关闭 3 年前。 有没有办法在动态添加的元素上使用 mouse
我正在尝试向 DIV 添加一个简单的 mousedown 事件监听器。 DIV 有一个子节点,即 IMG。但是,当 mousedown 事件触发时,该事件的 target 和 srcElement 属
嗨,我有这个 HTML 代码 Passengers 并且有这个JS代码 $("Table tr th").mousedown(function (e) { /*mouse
我有一个 mousedown 事件可以更改 Canvas 中对象的图像。但是,在第一次单击期间,除非我添加超时,否则更新功能不会更新图像。此外,我什至尝试 promise 在新图像链接之后等待,然后再
我已经创建了过渡链接,但是当应该使用 onmousedown 事件调用该函数时,我得到了一个未捕获的未定义函数。显然我的功能已定义。我还在学习代码,所以我看不到或不明白它是什么。任何提示将不胜感激。
我正在使用一个名为 circliful 的 jquery 库: https://github.com/pguso/jquery-plugin-circliful 我用它来创建“触觉加载”效果。 在这个
在下面的代码片段中,只有“mousemove”事件有效。 'mousedown' 没有效果,我无法解释为什么会这样。如果我将“mousedown”替换为“click”,它确实有效,但是我想使用 mou
当你使用方法的时候 public boolean mouseDown(Event e, int x, int y) 在Java中,Event对象是干什么的,有什么用?我正在尝试编写一个程序,让某人点击
我正在尝试像这样加载我的导航栏: $.get("nav.html",function(menuData){ $("body").html(menuData); )}; 在“nav.html”中我们
我的问题是,当右键发生 mousedown 事件时,我需要检查是否有 div 如果没有,那么我的 flag 全局 variable 变为 false 但我没有得到该条件。 我的 jQuery 脚本如下
我正在尝试编写一个可移动的对话框,但出现问题。有时当我想通过移动对话框上方的某个位置来移动对话框时,而不是对话框本身,标题文本正在移动,如下所示: 标题文本的 CSS: .arg-dialog-tit
我是一名优秀的程序员,十分优秀!