对多个对象使用相同的处理程序 WPF C#
Using same handlers for multiple objects WPF C#
这是在图像上拖动一些裁剪器的逻辑,并且有效。但是我在不同的 windows 上有多个图像(并且由于文件不同),我想为所有图像分配相同的逻辑,但我不想在任何地方复制相同的代码。有什么办法吗?
private bool isDragging;
private Point clickPosition;
private void OnMouseMove(object sender, MouseEventArgs e)
{
if (isDragging)
{
Point currentPosition = e.GetPosition(this.Parent as UIElement);
double xdiff = currentPosition.X - clickPosition.X;
double ydiff = currentPosition.Y - clickPosition.Y;
croppingAdorner.HandleThumb(1, 1, 0, 0, xdiff, ydiff);
clickPosition = e.GetPosition(this);
}
}
private void OnMouseDown(object sender, MouseButtonEventArgs e)
{
if (CropHelper.IsPointInsideRect(e.GetPosition(this.originalImage), rc))
{
isDragging = true;
clickPosition = e.GetPosition(this);
}
}
private void OnMouseUp(object sender, MouseButtonEventArgs e)
{
isDragging = false;
}
private void OnMouseLeave(object sender, MouseEventArgs e)
{
isDragging = false;
}
您可以创建附加行为。有关这方面的更多信息,请参阅以下链接。
WPF Attached Behavior Example – Watermark Text
Introduction to Attached Behaviors in WPF
基本上有两种不同的方式来实现这类行为,通常称为附加行为和混合行为。如果您熟悉依赖属性和附加属性,那么附加行为就是附加的 属性 和附加的 PropertyChangedCallback
执行某些操作或扩展它所在的 DependencyObject
当依赖项 属性 的值更改时附加。
与普通的附加行为相比,Blend 行为提供了一种更好的封装行为功能的方法。您可以通过创建从 System.Windows.Interactivity.Behavior<T>
class 派生的 class 来定义混合行为。您需要添加对 System.Windows.Interactivity.
的引用
这是在图像上拖动一些裁剪器的逻辑,并且有效。但是我在不同的 windows 上有多个图像(并且由于文件不同),我想为所有图像分配相同的逻辑,但我不想在任何地方复制相同的代码。有什么办法吗?
private bool isDragging;
private Point clickPosition;
private void OnMouseMove(object sender, MouseEventArgs e)
{
if (isDragging)
{
Point currentPosition = e.GetPosition(this.Parent as UIElement);
double xdiff = currentPosition.X - clickPosition.X;
double ydiff = currentPosition.Y - clickPosition.Y;
croppingAdorner.HandleThumb(1, 1, 0, 0, xdiff, ydiff);
clickPosition = e.GetPosition(this);
}
}
private void OnMouseDown(object sender, MouseButtonEventArgs e)
{
if (CropHelper.IsPointInsideRect(e.GetPosition(this.originalImage), rc))
{
isDragging = true;
clickPosition = e.GetPosition(this);
}
}
private void OnMouseUp(object sender, MouseButtonEventArgs e)
{
isDragging = false;
}
private void OnMouseLeave(object sender, MouseEventArgs e)
{
isDragging = false;
}
您可以创建附加行为。有关这方面的更多信息,请参阅以下链接。
WPF Attached Behavior Example – Watermark Text
Introduction to Attached Behaviors in WPF
基本上有两种不同的方式来实现这类行为,通常称为附加行为和混合行为。如果您熟悉依赖属性和附加属性,那么附加行为就是附加的 属性 和附加的 PropertyChangedCallback
执行某些操作或扩展它所在的 DependencyObject
当依赖项 属性 的值更改时附加。
与普通的附加行为相比,Blend 行为提供了一种更好的封装行为功能的方法。您可以通过创建从 System.Windows.Interactivity.Behavior<T>
class 派生的 class 来定义混合行为。您需要添加对 System.Windows.Interactivity.