代码之家  ›  专栏  ›  技术社区  ›  DavidA

Silverlight自定义控件根元素

  •  0
  • DavidA  · 技术社区  · 16 年前

    我正在尝试构建一个自定义控件,该控件要作为XAML的根元素存在。

    我现在有

    1. 已排序generic.xaml模板。
    2. Blend文件夹中允许我创建新“DaveControl”的新模板
    3. 在Blend中添加将在ContentPresenter中显示的内容的功能。

    但是,如果我运行它,内容就会消失。如果我将控件添加到用户控件,它将保持不变,但我不希望发生这种情况。然后,我将无法调用基方法,因为UserControl继承自Control,而g.cs将总是抱怨。

    我需要代码隐藏中的类有一个实现,我可以在该实现上重载一个save方法。所以codebehind派生自我编写的一个类。

    实际上,我只想说新的Dave控件,转到代码隐藏并编写一个方法“public override save”。

    这有可能吗?

    1 回复  |  直到 16 年前
        1
  •  0
  •   DavidA    16 年前

    好吧,当你试着这么做的时候,有很多小问题要处理。

    如果不希望在混合中遇到竞争条件和找不到对象错误,请更改模板的应用顺序。

    在自定义类的构造函数中,调用

    this.ApplyTemplate();
    

    阅读这篇伟大的文章,了解原因:

    http://pagebrooks.com/archive/2008/11/30/tweaking-onapplytemplate-event-timing-in-silverlight-2.aspx

    然后,确保在新控件上具有x:class属性。这意味着您将获得从XAML生成的代码,该代码命名所有属性并正确解析XAML。