我怎样才能增加a的字体,比方说TextBlock?我不想要这样的东西:
<TextBlock FontSize="20">
text
</TextBlock>
因为当用户更改Windows控件字体大小的设置时,它将无法正常工作。我们是否有+VALUE
(例如+2
),类似于HTML?
修改
这就是我所说的Windows设置:
但我收到的答案完全让我满意。
答案 0 :(得分:9)
答案 1 :(得分:4)
调整Bob Vale对原始代码的回答
<TextBlock>
<TextBlock.RenderTransform>
<ScaleTransform ScaleX="1.2" ScaleY="1.2" />
</TextBlock.RenderTransform>
text
</TextBlock>
答案 2 :(得分:1)
首先,您应该为字体大小创建应用程序作用域样式,如本答案中所述:WPF global font size
然后,您可以将fontsize值绑定到静态类的属性,并采用控制面板中定义的大小,并相应地进行调整。
答案 3 :(得分:1)
对于那些为了设计目的而需要相对字体大小机制而需要这些问题的可怜灵魂,例如你在css中使用的,我发现了一个似乎在WPF中工作的黑客。
以这种方式使用:
<StackPanel>
<TextBlock>outer</TextBlock>
<ContentControl local:RelativeFontSize.RelativeFontSize="2">
<StackPanel>
<TextBlock>inner</TextBlock>
<ContentControl local:RelativeFontSize.RelativeFontSize="2">
<StackPanel>
<TextBlock>innerest</TextBlock>
</StackPanel>
</ContentControl>
</StackPanel>
</ContentControl>
</StackPanel>
这给出了这个:
这是代码:
public static class RelativeFontSize
{
public static readonly DependencyProperty RelativeFontSizeProperty =
DependencyProperty.RegisterAttached("RelativeFontSize", typeof(Double), typeof(RelativeFontSize), new PropertyMetadata(1.0, HandlePropertyChanged));
public static Double GetRelativeFontSize(Control target)
=> (Double)target.GetValue(RelativeFontSizeProperty);
public static void SetRelativeFontSize(Control target, Double value)
=> target.SetValue(RelativeFontSizeProperty, value);
static Boolean isInTrickery = false;
public static void HandlePropertyChanged(Object target, DependencyPropertyChangedEventArgs args)
{
if (isInTrickery) return;
if (target is Control control)
{
isInTrickery = true;
try
{
control.SetValue(Control.FontSizeProperty, DependencyProperty.UnsetValue);
var unchangedFontSize = control.FontSize;
var value = (Double)args.NewValue;
control.FontSize = unchangedFontSize * value;
control.SetValue(Control.FontSizeProperty, unchangedFontSize * value);
}
finally
{
isInTrickery = false;
}
}
}
}