2

我有一个像这样的简单设置。

  1. XAML 中的内容控制
  2. 将 AdornerY 添加到 ContentControl 代码隐藏中的装饰层
  3. 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;
    }
}
4

0 回答 0