1

我有一个带有自定义控件的 Silverlight 应用程序,该控件MyDataGrid具有DataGrid一些额外的功能。

这是使用它的项目的一部分。它还需要自定义样式。我可以将样式添加到我的样式资源字典并设置TargetType="sdk:DataGrid"哪个有效。

但是,我的样式依赖于MyProperty特定于 的属性MyDataGrid,因此编辑器中会出现警告。更重要的是,无法在设计器中预览样式。

但是,它们在代码运行时确实有效。

我的问题是:有没有办法将本地控件拉入资源字典,而不是创建一个单独的项目,将其编译为 .dll,然后拉入该程序集?

谢谢!

4

1 回答 1

1

听起来您制作了一个自定义控件,但您尚未为其定义默认样式。尝试以下操作:

  1. 在您的项目中,在名为 Themes 的根级别添加一个文件夹。
  2. 在 Themes 文件夹中,添加一个名为 generic.xaml 的 ResourceDictionary。
  3. 将所有 MyDataGrid 样式添加到 generic.xaml。
  4. 确保其中一种样式是隐式样式(在这里使用 BasedOn 是一个很好的解决方案)。
  5. 在 MyDataGrid 的默认构造函数中,添加以下行DefaultStyleKey = typeof(MyDataGrid);

如果您想从代码访问样式的一部分(在 XAML 中定义),您应该将该 XAML 项命名为“PART_something”。设计工具了解 PART_* 语法,并且这向库使用者表明,如果您重新模板控件,则必须定义以 PART_ 为前缀的所需部分。

以下是有关如何定义自定义控件的基础知识。

于 2012-05-21T18:45:02.357 回答