【问题标题】:WPF- Richtextbox fontsize zoom factor? [closed]WPF- Richtextbox字体大小缩放因子? [关闭]
【发布时间】:2016-08-12 17:46:15
【问题描述】:

我发现wpf 中的richtextbox 没有zoomfactor 属性来获取或设置RichTextBox 的当前缩放级别。我想知道在 wpf 中是否有任何其他方法可以实现相同的功能。这里是参考站https://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.zoomfactor(v=vs.110).aspx

感谢任何帮助。谢谢。

【问题讨论】:

  • Joe的回答解决了我的问题,我也找到了另一种方式来实现another answer的功能
  • 这样更好!

标签: c# wpf fonts richtextbox


【解决方案1】:

您可以通过将富文本框包装在 ViewBox 中并设置类似于my answer here 的宽度来添加缩放功能。

<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();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 2018-07-04
    • 2010-12-14
    • 2023-03-22
    • 2021-08-22
    • 2013-03-20
    • 1970-01-01
    相关资源
    最近更新 更多