如何为wpf文本框绑定fontsize?

时间:2015-10-13 14:00:38

标签: c# wpf binding textbox font-size

我有一个适当的文本框控件,没有绑定,而它的字体大小应该动态更改。

我想做正确的事并使用绑定工作。

我尝试使用(xaml)绑定FontSize:

<UserControl x:Class="<ClassName>"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" Focusable="True"
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
    <TextBox x:Name="_textBox" Visibility="Visible" xml:space="preserve"
             Background="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}},Path=Background}"
             Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}},Path=Foreground}"
             FontFamily="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}},Path=FontFamily}"
             BorderBrush="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}},Path=BorderBrush}"
             Text="{Binding MultilineText}"
             FontSize="{Binding Path=MultilineFontSize}"
             KeyUp="_textBox_KeyUp"
             PreviewTextInput="_textBox_PreviewTextInput"
             DataObject.Pasting="_textBox_Pasting"
             VerticalContentAlignment="Top"
             PreviewKeyDown="TextBox_OnPreviewKeyDown"
             TextWrapping="Wrap"
             ScrollViewer.VerticalScrollBarVisibility="Visible"
             />
</Grid>

并在后面的代码中:

private double _multilineFontSize;
public double MultilineFontSize
    {
        get { return GetBestFittingFontSize();  }
        set
        {
            if (value != _multilineFontSize)
            {
                _multilineFontSize = value;
                OnPropertyChanged("MultilineFontSize");
            }
        }
    }

_multilineFontSize的唯一用途是在我使用它的任何地方(在事件等中)替换_textbox.Text。

GetBestFittingFontSize()是一个函数(可以正常工作)并计算我需要使用的字体大小。把它当作给定的。它返回双倍。

它不起作用。有人知道为什么吗? (可能是一些DataContext问题?)

1 个答案:

答案 0 :(得分:0)

您可以尝试使用可用于扩展其内容的ViewBox

<Viewbox StretchDirection="Both" Stretch="Uniform">
    <local:UserControl1 Height="100" Width="100"/>
</Viewbox>