【问题标题】:Silverlight styles for custom controls. Using the BasedOn property自定义控件的 Silverlight 样式。使用 BasedOn 属性
【发布时间】:2011-09-09 09:20:07
【问题描述】:

我之前一直使用 DefaultStyleKey 设置来设置我的数据网格的样式,但现在我想用另一种的 BasedOn 属性扩展一种样式。所以现在我有两个相同类型的样式,我必须比简单地设置 DefaultStyleKey 更具体。

很遗憾,我似乎无法访问 generic.xaml 文件以获取我创建的样式。

当您不想使用 DefaultStyleKey 并且需要从代码中访问您的样式时,必须有一个解决方法

【问题讨论】:

    标签: silverlight controls


    【解决方案1】:

    您是否正在寻找这样的东西:

    public override void OnApplyTemplate()
    {
    base.OnApplyTemplate();
    ResourceDictionary rd = new ResourceDictionary();
    rd.Source = new Uri("/CustomControl;component/Themes/generic.xaml", UriKind.RelativeOrAbsolute);
    Style style = rd["StyleKey"] as Style;
    }
    

    'CustomControl' 是您的项目名称,StyleKey 是您要访问的样式的 Key。

    【讨论】:

      【解决方案2】:

      那么为什么你不能扩展你的数据网格,创建一个新类并使用默认样式键作为新类型,在你的 generic.xaml 中你可以基于你以前的样式创建一个新样式。

      但是在 silverlight 中,我们创建了一种基本样式作为命名样式,并且我们从它继承样式。

      <style x:Key="BaseDataGrid"
      
      <style TargetType="MyGrid1" 
             BasedOn="BaseDataGrid"
      
      <style TargetType="MyGrid2" 
             BasedOn="BaseDataGrid"
      

      【讨论】:

      • 是的,这是一种解决方案,但我想避免完全重新创建数据网格的样式,而我只需要调整现有参数上的一个参数。
      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      相关资源
      最近更新 更多