2015-10-13 133 views
0

我有一個適當的工作,沒有綁定,而其字體大小應動態更改的文本框控件。如何爲wpf文本框綁定fontsize?

我想做的正確,並使用綁定工作。

我試圖綁定(XAML)的字號使用:

<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問題?)

+0

我們不能說因爲你沒有給我們的XAML(我們甚至不知道控制型),我們不知道是什麼'返回GetBestFittingFontSize();'是,如何'_multilineFontSize '設置好,目前的結果是什麼等等。 –

+0

@PatrickHofman - 感謝您的反饋。增加了很多細節(我想把它縮短......這可能太短了......對不起!) – MTZ

+0

我投票重新開放。希望別人會跟隨。 –

回答

0

您可以嘗試使用可用於縮放其內容的ViewBox

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

這是[確切結果](http://stackoverflow.com/q/13787378/993547)谷歌給我也;) –

+0

@PatrickHofman: - 我明白了。我應該刪除我的答案並投票結束重複? –

+0

我不確定這是否甚至是一個問題的答案... –