以编程方式创建ControlTemplate

时间:2013-04-29 12:02:24

标签: wpf controltemplate

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

  1. XAML中的ContentControl
  2. 将AdornerY添加到ContentControl的代码隐藏中的adorner层
  3. AdornerY的模板设置为我的自定义ControlTemplate AdornerTemplateY
  4. 我很确定1和2不会出现任何问题,所以我在这里发布了3的代码。

    Visual Studio Express对错误不是很友好,它只是说:

      

    发生了'System.ArgumentException'类型的第一次机会异常   在PresentationFramework.dll

    代码有什么问题?非常感谢。

    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;
        }
    }
    

0 个答案:

没有答案