2017-03-06 83 views
0

如何在后台代码(WPF)中设置Style basedOn? 请帮我... 我的代码不工作... 错误==>使用'SetterBaseCollection'后无法修改。 这是我的代码的一部分。wpf style basedon in code

public Style SettingStyle(Style sty, double fs) 
    { 
     Style baseStyle = new Style(sty.TargetType); 

     Style newStyle = Application.Current.TryFindResource(sty.TargetType) as Style; 
     // Style newStyle = new Style(); 
     // newStyle.BasedOn = new Style(newStyle.TargetType, baseStyle); 
     newStyle.Setters.Add(new Setter(Control.FontSizeProperty, fs)); 
     if (newStyle.Setters.Count > 1) 
     { 
      newStyle.Setters.Add(sty.Setters[1]); 
      newStyle.Setters.Add(sty.Setters[2]); 
      if (newStyle.Setters.Count > 3) 
      { 
       newStyle.Setters.Add(sty.Setters[3]); 
      } 
     } 

     return newStyle; 
    } 

回答

0

您可以设置baseStyle财产或通过构造函数:

newStyle.BasedOn = baseStyle; 

Style newStyle = new Style(targetType, baseStyle); 

在你的情况可能

public Style SettingStyle(Style sty, double fs) 
    { 
     // Return a base type for "TargetType" 
     Style baseStyle = Application.Current.TryFindResource(sty.TargetType) as Style; 

     Style newStyle = new Style(sty.TargetType, baseStyle); 

     newStyle.Setters.Add(new Setter(Control.FontSizeProperty, fs)); 

     return newStyle; 
    } 

public Style SettingStyle(Style sty, double fs) 
    { 
     //Use style passed to the function(sty) as a baseStyle for new style 
     Style newStyle = new Style(sty.TargetType, sty); 

     newStyle.Setters.Add(new Setter(Control.FontSizeProperty, fs)); 

     return newStyle; 
    } 

这取决于正是你想要达到的目标。

+0

哦,它的工作原理!非常感谢 !! :) – parfum