C# 如何设置文本块';s字体大小是另一个字体大小属性的比率吗?

C# 如何设置文本块';s字体大小是另一个字体大小属性的比率吗?,c#,wpf,xaml,C#,Wpf,Xaml,我在自定义用户控件中有一个TextBlock,我希望它比该用户控件的全局字体大小属性稍大(可能大7%)。我不确定做这件事的最佳方式。有人有什么建议吗 (显然,这一尝试是残暴的,但希望它有助于将我的要求形象化) 您好,自定义用户控件! 您可以使用library进行此操作。您可以使用library进行此操作。最佳答案(归功于@Kenny)是一个简单的转换器,它将用户控件字体大小作为输入 在xaml中使用: <z:RatioConverter x:Key="AdjustTitleFontSiz

我在自定义用户控件中有一个TextBlock,我希望它比该用户控件的全局字体大小属性稍大(可能大7%)。我不确定做这件事的最佳方式。有人有什么建议吗

(显然,这一尝试是残暴的,但希望它有助于将我的要求形象化)


您好,自定义用户控件!
您可以使用library进行此操作。

您可以使用library进行此操作。

最佳答案(归功于@Kenny)是一个简单的转换器,它将用户控件字体大小作为输入

在xaml中使用:

<z:RatioConverter x:Key="AdjustTitleFontSizeConverter" Ratio="1.07" />

<TextBlock 
    x:Name="Title" 
    FontSize="{Binding FontSize, Converter={StaticResource AdjustTitleFontSizeConverter}"> 
    Hello Custom User Control! 
</TextBlock>
最好的答案(归功于@Kenny)是一个简单的转换器,它将用户控制的字体大小作为输入

在xaml中使用:

<z:RatioConverter x:Key="AdjustTitleFontSizeConverter" Ratio="1.07" />

<TextBlock 
    x:Name="Title" 
    FontSize="{Binding FontSize, Converter={StaticResource AdjustTitleFontSizeConverter}"> 
    Hello Custom User Control! 
</TextBlock>

使用所需的比例因子应用
ScaleTransform

在本例中,所有TextBlock从父窗口继承FontSize=20(这是依赖项属性继承)。然后,我将一个文本块的FontSize更改为22,并缩放另一个文本块(20*1.1==22)。他们看起来很像我

<Window x:Class="WpfDemos.FontWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WpfDemos" Height="300" Width="300" FontSize="20">
    <StackPanel>
        <TextBlock Text="Hello Custom User Control!"/>
        <TextBlock Text="Hello Custom User Control!"/>

        <TextBlock Text="Hello Custom User Control!">
            <TextBlock.LayoutTransform>
                <ScaleTransform ScaleX="1.1" ScaleY="1.1"/>
            </TextBlock.LayoutTransform>
        </TextBlock>

        <TextBlock Text="Hello Custom User Control!" FontSize="22"/>

        <TextBlock Text="Hello Custom User Control!"/>
        <TextBlock Text="Hello Custom User Control!"/>
    </StackPanel>
</Window>

使用所需的比例因子应用
ScaleTransform

在本例中,所有TextBlock从父窗口继承FontSize=20(这是依赖项属性继承)。然后,我将一个文本块的FontSize更改为22,并缩放另一个文本块(20*1.1==22)。他们看起来很像我

<Window x:Class="WpfDemos.FontWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WpfDemos" Height="300" Width="300" FontSize="20">
    <StackPanel>
        <TextBlock Text="Hello Custom User Control!"/>
        <TextBlock Text="Hello Custom User Control!"/>

        <TextBlock Text="Hello Custom User Control!">
            <TextBlock.LayoutTransform>
                <ScaleTransform ScaleX="1.1" ScaleY="1.1"/>
            </TextBlock.LayoutTransform>
        </TextBlock>

        <TextBlock Text="Hello Custom User Control!" FontSize="22"/>

        <TextBlock Text="Hello Custom User Control!"/>
        <TextBlock Text="Hello Custom User Control!"/>
    </StackPanel>
</Window>


更改myUserControl.FontSize时,在其后面添加代码,然后更改此值。另一种方法是使用ValueConverter并将其作为参数绑定到该属性。@kenny我不确定在UserControl.FontSize发生更改时如何在代码隐藏中引用-我已查找要重写的OnFontSizeChanged方法,但找不到任何方法。在myUserControl.FontSize发生更改时添加代码可以更改此方法。另一种方法是使用ValueConverter,并将其作为参数绑定到该属性。@kenny我不确定在UserControl.FontSize发生更改时如何在代码中引用-我已查找要重写的OnFontSizeChanged方法,但找不到任何方法。您能提供一个如何使用的示例吗?此外,我更希望不必使用整个外部库来解决这样一个小问题。Wpf在开箱即用的绑定中没有提供这样的灵活性。然而,您可以使用代码隐藏来实现相同的功能,但我个人避免使用代码隐藏来进行绑定更改。您能提供一个如何使用的示例吗?此外,我更希望不必使用整个外部库来解决这样一个小问题。Wpf在开箱即用的绑定中没有提供这样的灵活性。不过,您可以使用代码隐藏来实现相同的功能,但我个人避免使用代码隐藏来进行绑定更改。