我有一个像这样的简单设置。
- XAML 中的内容控制
- 将 AdornerY 添加到 ContentControl 代码隐藏中的装饰层
- AdornerY 的模板设置为我的自定义 ControlTemplate AdornerTemplateY
我很确定 1 和 2 不会有任何问题,所以我在这里发布 3 的代码。
Visual Studio Express 对错误不是很友好,它只是说:
PresentationFramework.dll 中出现“System.ArgumentException”类型的第一次机会异常
代码有什么问题?谢谢一堆。
class AdornerTemplateY : ControlTemplate
{
FrameworkElementFactory Chrome;
public AdornerTemplateY(ContentControl designerItem)
: base(typeof(AdornerY))
{
Chrome = new FrameworkElementFactory(typeof(Rectangle));
Chrome.SetValue(Rectangle.NameProperty, "INTERNAL_CHROME");
Chrome.SetValue(Rectangle.FillProperty, Brushes.PowderBlue);
Chrome.SetValue(Rectangle.StrokeProperty, Brushes.Black);
Chrome.SetValue(Rectangle.DataContextProperty, designerItem);
Chrome.SetValue(Rectangle.IsHitTestVisibleProperty, true);
this.VisualTree = this.Chrome;
this.Triggers.Add(CreateTrigger());
}
private Trigger CreateTrigger()
{
Trigger TriggerFocus = new Trigger
{
Property = AdornerY.IsMouseOverProperty,
Value = true,
Setters =
{
new Setter
{
Property = AdornerY.VisibilityProperty,
Value = Visibility.Collapsed
},
}
};
return TriggerFocus;
}
}