2017-03-06 8 views
0

どのようにしてビルトインコード(WPF)でスタイルベースオンを設定できますか? 助けてください... 私のコードは動作しません... エラー==>使用後は変更できません 'SetterBaseCollection'。 ここに私のコードの一部です。wpfスタイルの基盤を背後のコード

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

関連する問題