基于后台代码的 wpf 样式
wpf style basedon in behind code
如何在后台代码 (WPF) 中设置 Style basedOn ?
请帮我 ...
我的代码不起作用...
错误==>使用后不能修改'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;
}
您可以将 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;
}
这取决于你想要达到的目标。
如何在后台代码 (WPF) 中设置 Style basedOn ? 请帮我 ... 我的代码不起作用... 错误==>使用后不能修改'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;
}
您可以将 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;
}
这取决于你想要达到的目标。