在shape类中创建内部鼠标事件

时间:2016-01-14 05:56:01

标签: c# wpf events mouseevent shape

我正在创建自定义Shape类:

public class CustomBox : Shape
{
    protected override Geometry DefiningGeometry
    {
        get
        {
            Stroke = Brushes.Red;
            var pathGeometry = new PathGeometry();

            pathGeometry.AddGeometry(new RectangleGeometry(new Rect(new Point(100, 200), new Point(400, 400)));

            var formattedText = new FormattedText("CustomBox", CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("Times New-Roman"), 14, Brushes.Red);
            var textGeometry = formattedText.BuildGeometry(new Point(100, 200));

            pathGeometry.AddGeometry(textGeometry);
            return pathGeometry;
        }
    }
}

我想添加/覆盖/实施内部Mouse事件,例如MouseDownMouseUpMouseMove等,这将定义{{1}的行为对象。

例如:

我希望添加一个“行为”,当我将鼠标悬停在对象上时 - 结果将是CustomBox将突出显示(例如通过增加Rectangle)。

是否可以添加此类函数而无需在外部将对象注册到StrokeThickness个事件(从创建Mouse的类并将其添加到CustomBox)?

1 个答案:

答案 0 :(得分:0)

请尝试下一个:  1. Xaml代码:

public

2。 CustomBox代码:

<Window x:Class="CustomShapeSoHelpAttempt.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:customShapeSoHelpAttempt="clr-namespace:CustomShapeSoHelpAttempt"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <customShapeSoHelpAttempt:CustomBox HorizontalAlignment="Center" VerticalAlignment="Center" Stroke="Red" StrokeThickness="1" Fill="#00FFFFFF"/>
</Grid></Window>

如您所见,您可以覆盖所有与控件相关的鼠标事件处理程序并在那里执行逻辑。这一切都归功于您的控件派生自Shape控件并拥有其所有事件处理程序。 如果你的代码有问题,我很乐意提供帮助。 问候。