WPF Richtextbox 字体大小缩放因子?
WPF- Richtextbox fontsize zoom factor?
我发现 wpf 中的 richtextbox 没有 zoomfactor 属性 来获取或设置 RichTextBox 的当前缩放级别。我想知道是否有其他方法可以在wpf中实现相同的功能。这里是参考网站https://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.zoomfactor(v=vs.110).aspx
感谢任何帮助。谢谢。
您可以通过将富文本框包装在 ViewBox 中并设置类似于 的宽度来添加缩放功能。
<Viewbox>
<RichTextBox Width="{Binding Width}" Height="{Binding Height}"/>
</ViewBox>
同宽高:
private int BaseWidth = 1150;
private int BaseHeight = 750;
public int Width
{
get
{
return (int)(BaseWidth * appSettings.Zoom);
}
}
public int Height
{
get
{
return (int)(BaseHeight * appSettings.Zoom);
}
}
你会得到这样的行为:
它可能需要一些调整,也许使用 ViewBox 的宽度和高度并将富文本设置为它的倍数,以便它可以很好地随 UX 缩放。
编辑 您可以使用像这样的多重绑定获得“2x 正常大小”缩放、保持布局纵横比等:
<Grid x:Name="MainViewBoxContainer">
<Viewbox>
<RichTextBox>
<RichTextBox.Width>
<MultiBinding Converter="{StaticResource MultiBindingMultiplier}">
<Binding Path="ActualWidth" ElementName="MainViewBoxContainer"/>
<Binding Path="Zoom"/>
</MultiBinding>
</RichTextBox.Width>
<RichTextBox.Height>
<MultiBinding Converter="{StaticResource MultiBindingMultiplier}">
<Binding Path="ActualHeight" ElementName="MainViewBoxContainer"/>
<Binding Path="Zoom"/>
</MultiBinding>
</RichTextBox.Height>
</RichTextBox>
</Viewbox>
其中多绑定转换器:
public class MultiBindingMultiplier : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values.Length > 1)
{
try
{
double value = (double)values[0];
for (int i = 1; i < values.Length; i++)
{
value *= (double)values[i];
}
return value;
}
catch
{
return null;
}
}
return null;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
我发现 wpf 中的 richtextbox 没有 zoomfactor 属性 来获取或设置 RichTextBox 的当前缩放级别。我想知道是否有其他方法可以在wpf中实现相同的功能。这里是参考网站https://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.zoomfactor(v=vs.110).aspx
感谢任何帮助。谢谢。
您可以通过将富文本框包装在 ViewBox 中并设置类似于
<Viewbox>
<RichTextBox Width="{Binding Width}" Height="{Binding Height}"/>
</ViewBox>
同宽高:
private int BaseWidth = 1150;
private int BaseHeight = 750;
public int Width
{
get
{
return (int)(BaseWidth * appSettings.Zoom);
}
}
public int Height
{
get
{
return (int)(BaseHeight * appSettings.Zoom);
}
}
你会得到这样的行为:
它可能需要一些调整,也许使用 ViewBox 的宽度和高度并将富文本设置为它的倍数,以便它可以很好地随 UX 缩放。
编辑 您可以使用像这样的多重绑定获得“2x 正常大小”缩放、保持布局纵横比等:
<Grid x:Name="MainViewBoxContainer">
<Viewbox>
<RichTextBox>
<RichTextBox.Width>
<MultiBinding Converter="{StaticResource MultiBindingMultiplier}">
<Binding Path="ActualWidth" ElementName="MainViewBoxContainer"/>
<Binding Path="Zoom"/>
</MultiBinding>
</RichTextBox.Width>
<RichTextBox.Height>
<MultiBinding Converter="{StaticResource MultiBindingMultiplier}">
<Binding Path="ActualHeight" ElementName="MainViewBoxContainer"/>
<Binding Path="Zoom"/>
</MultiBinding>
</RichTextBox.Height>
</RichTextBox>
</Viewbox>
其中多绑定转换器:
public class MultiBindingMultiplier : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values.Length > 1)
{
try
{
double value = (double)values[0];
for (int i = 1; i < values.Length; i++)
{
value *= (double)values[i];
}
return value;
}
catch
{
return null;
}
}
return null;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}