我在一个自定义用户控件中有一个TextBlock,我希望它比该用户控件的全局字体大小属性稍大一点(可能是7% )。我不确定做这件事的最好方法。有人有什么建议吗?
(显然,这种尝试是残暴的,但希望它有助于可视化我所要求的内容)。
<TextBlock
x:Name="Title"
FontSize="{myUserControl.FontSize * 1.07}">
Hello Custom User Control!
</TextBlock>
发布于 2018-08-16 03:34:36
最好的答案(归功于@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>
RatioConverter.cs
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));
}
发布于 2018-08-16 04:09:07
应用具有所需比例因子的ScaleTransform
。
在本例中,所有TextBlock都从父窗口继承FontSize=20 (它是依赖属性继承)。然后,我将一个TextBlock的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>
发布于 2018-08-16 02:27:44
您可以使用https://www.nuget.org/packages/CalcBinding/库来实现此目的。
https://stackoverflow.com/questions/51864251
复制相似问题