我正在创建自定义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
事件,例如MouseDown
,MouseUp
,MouseMove
等,这将定义{{1}的行为对象。
例如:
我希望添加一个“行为”,当我将鼠标悬停在对象上时 - 结果将是CustomBox
将突出显示(例如通过增加Rectangle
)。
是否可以添加此类函数而无需在外部将对象注册到StrokeThickness
个事件(从创建Mouse
的类并将其添加到CustomBox
)?
答案 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控件并拥有其所有事件处理程序。 如果你的代码有问题,我很乐意提供帮助。 问候。