WPF - 自动调整所有文本的大小

时间:2013-04-03 09:24:31

标签: c# wpf xaml visual-studio-2012

我正在尝试使我的应用程序中的所有元素自动调整为父元素。这与使用网格,边距和自动尺寸相得益彰。问题是文本大小没有调整大小,并且在大元素内变得非常小。我尝试使用带有按钮的视箱,效果很好:

<Button x:Name="button_1">
  <Viewbox>
    <TextBlock Text="Button1"></TextBlock>
  </Viewbox>                
</Button>

但是我无法使用 TreeviewItem中的标题。 如何自动调整应用程序中所有文本元素的字体? 对此的任何解决方案都很受欢迎。不需要涉及使用viewbox元素。

修改 我的问题可能有点不清楚。我的问题是在TreeViewItem中自动调整Header内的文本。

<TreeView x:Name="tree1" Margin="0">
    <TreeViewItem x:Name="item1" Header="Item1"> //This header needs to autosize
     ...
    </TreeViewItem>
</TreeView>

解决方案:相当于mathieu提供的答案。

<TreeView x:Name="tree1" Margin="0">
    <TreeViewItem x:Name="item1">
      <TreeViewItem.Header>
        <Viewbox>
          <TextBlock>Item1</TextBlock>
        </Viewbox>
      </TreeViewItem.Header>
    </TreeViewItem>
</TreeView>

2 个答案:

答案 0 :(得分:1)

声明你的标题:

<TreeView x:Name="tree1" Margin="0">
    <TreeViewItem x:Name="item1">
        <TreeViewItem.Header>
            <Viewbox>
                <TextBlock TextWrapping="Wrap" Text="Header" />
            </Viewbox>   
        </TreeViewItem.Header>
    </TreeViewItem>
</TreeView>

答案 1 :(得分:0)

完成此代码:

String text = "Your Text Goes here";
    Typeface objTypeFace = new Typeface("Helvetica");
    FormattedText objft = new FormattedText(text, CultureInfo.CurrentCulture, 
            FlowDirection.LeftToRight, objTypeFace , 20, Brushes.Red);

    Size textSize = new Size(objft.Width, objft.Height);

<Button x:Name="button_1">
  <Viewbox>
    <TextBlock TextWrapping="Wrap" Text="Button1"></TextBlock>
  </Viewbox>                
</Button>