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

4

我正在尝试使应用程序中的所有元素自动调整大小以适应父元素。使用网格、边距和自动大小做得很好。但问题是文本大小不会自动调整,这使得在一个大元素内看起来非常小。我尝试使用带有按钮的视图框,效果不错:

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

但是我无法使它与 TreeviewItem 中的标题 一起工作。 如何自动调整应用程序中所有文本元素的字体大小? 对此的任何解决方案都将不胜感激。 不需要使用 viewbox 元素。

编辑: 我可能表达我的问题有些不清楚。 我的问题是自动调整 TreeViewItem 中标题内的文本大小。

<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个回答

1

像这样声明您的标题:

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

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>

非常抱歉如果我的问题不够清晰,但我已经找到了如何在按钮上使用视图框的方法。问题是如何使用视图框自动调整TreeViewItem标题中的文本大小? - jon-a-nygaard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接