【问题标题】:Silverlight: Style for Custom Control in Same ProjectSilverlight:同一项目中自定义控件的样式
【发布时间】:2012-05-21 16:02:56
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

  • 您是否为 MyDataGrid 类定义了 generic.xaml?
  • 不是吗?你有任何关于我将如何进行这项工作的信息吗?我可以找到一些关于它的信息,但不是很多......

标签: silverlight silverlight-4.0


【解决方案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_ 为前缀的所需部分。

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

【讨论】:

  • 很好的解决方案!如此简单...感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多