Silverlight:同一项目中自定义控件的样式

时间:2012-05-21 16:02:57

标签: silverlight silverlight-4.0

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

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

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

然而,当代码运行时,它们会起作用。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

听起来你做了一个自定义控件,但是你没有为它定义默认样式。请尝试以下方法:

  1. 在您的项目中,在根级别添加一个名为Themes的文件夹。
  2. 在Themes文件夹中,添加名为generic.xaml的资源字典。
  3. 将所有MyDataGrid样式添加到generic.xaml。
  4. 确保其中一个样式是隐式样式(使用BasedOn是一个很好的解决方案)。
  5. 在MyDataGrid的默认构造函数中,添加行DefaultStyleKey = typeof(MyDataGrid);
  6. 如果要从代码访问部分样式(在XAML中定义),则应将该XAML项目命名为“PART_something”。设计工具了解PART_ *语法,并指出库消费者如果重新设置控件,则必须定义前缀为PART _的必需件。

    以下是有关如何define a custom control的基础知识。