首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将TextBlock的字体大小设置为另一个字体大小属性的比率?

如何将TextBlock的字体大小设置为另一个字体大小属性的比率?
EN

Stack Overflow用户
提问于 2018-08-16 02:17:21
回答 3查看 328关注 0票数 0

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

(显然,这种尝试是残暴的,但希望它有助于可视化我所要求的内容)。

代码语言:javascript
复制
<TextBlock 
    x:Name="Title" 
    FontSize="{myUserControl.FontSize * 1.07}"> 
    Hello Custom User Control! 
</TextBlock>
EN

回答 3

Stack Overflow用户

发布于 2018-08-16 03:34:36

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

在xaml中使用:

代码语言:javascript
复制
<z:RatioConverter x:Key="AdjustTitleFontSizeConverter" Ratio="1.07" />

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

RatioConverter.cs

代码语言:javascript
复制
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;

public class RatioConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // Input santize first..
        return (System.Convert.ToDouble(value)) * this.Ratio;
    }

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    public Double Ratio
    {
        get { return (Double)GetValue(RatioProperty); }
        set { SetValue(RatioProperty, value); }
    }

    public static readonly DependencyProperty RatioProperty = DependencyProperty.Register(
        "Ratio", typeof(Double), typeof(RatioConverter), new FrameworkPropertyMetadata(1.0));
}
票数 1
EN

Stack Overflow用户

发布于 2018-08-16 04:09:07

应用具有所需比例因子的ScaleTransform

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

代码语言:javascript
复制
<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>
票数 1
EN

Stack Overflow用户

发布于 2018-08-16 02:27:44

您可以使用https://www.nuget.org/packages/CalcBinding/库来实现此目的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51864251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档