Стиль wpf на основе кода
Как мне установить Style basedOn внутри кода (WPF)? Пожалуйста, помогите мне... Мой код не работает... Ошибка ==> Вы не можете изменить после использования 'SetterBaseCollection'. Вот часть моего кода.
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;
}
1 ответ
Решение
Вы можете установить 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;
}
Это зависит от того, чего именно вы хотите достичь.