Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 视口框内WPF计算字体大小_C#_Wpf - Fatal编程技术网

C# 视口框内WPF计算字体大小

C# 视口框内WPF计算字体大小,c#,wpf,C#,Wpf,我遇到了一个问题,在这里尝试了互联网和线程来寻找解决方案,但还没有找到。 我是一名编程初学者,如有任何帮助,将不胜感激 我有一个窗口,它将显示在第二个屏幕上,一个文本块包装在一个视图框中,文本被绑定,并将在运行时在第二个屏幕上动态填充。fontsize也是绑定的,用户可以更改 这是非常好的工作。 问题是,当用户将fontsize增加到更高的值时,如果文本很短,文本看起来很好,但是如果文本非常大,文本看起来很难看,有时会变得不可读 我尝试过ViewBox的Sretch方向和拉伸,但没有找到更好的方

我遇到了一个问题,在这里尝试了互联网和线程来寻找解决方案,但还没有找到。 我是一名编程初学者,如有任何帮助,将不胜感激

我有一个窗口,它将显示在第二个屏幕上,一个文本块包装在一个视图框中,文本被绑定,并将在运行时在第二个屏幕上动态填充。fontsize也是绑定的,用户可以更改

这是非常好的工作。 问题是,当用户将fontsize增加到更高的值时,如果文本很短,文本看起来很好,但是如果文本非常大,文本看起来很难看,有时会变得不可读

我尝试过ViewBox的Sretch方向和拉伸,但没有找到更好的方法来解决我的问题,但是如果有非常长的文本且文本不可读,请手动减少fontsize使文本可读

我能得到什么帮助。我想到的一个解决方案是根据父网格的高度和宽度计算fontsize,这样当文本很长时,计算会将fontsize减小到可读的程度

这是我的示例Xaml

<Grid>
    <Viewbox Stretch="Fill"
             StretchDirection="DownOnly">
        <TextBlock Text="{Binding}"
                   Width="{Binding}"
                   FontSize="{Binding}"
                   TextWrapping="Wrap">

        </TextBlock>
    </Viewbox>
</Grid>


好的,我找到了解决这个问题的方法。如果有人有另一个解决方案,我们会欢迎的

我将textblock包装在一个边框内,并移除了textblock宽度的绑定,我将增加和减少宽度。如果字体大小增加,我将在ViewModel中将宽度减少一个比率,反之亦然

<Grid>
<Viewbox >
    <Border>
    <TextBlock Text="{Binding}"
               Width="{Binding}"
               FontSize="{Binding}"
               TextWrapping="Wrap">

    </TextBlock>
   </Border>
</Viewbox>


您必须处理最小/最大大小,还可以根据
FontSize
计算
宽度,这可以通过
System.Windows.Media.FormattedText
类完成。感谢您的回复。我试试这个