首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使WPF TextBlock在多行上显示我的文本?

如何使WPF TextBlock在多行上显示我的文本?
EN

Stack Overflow用户
提问于 2011-09-14 02:54:30
回答 5查看 132.8K关注 0票数 63

我有一个wpf窗口,其中有一个堆栈面板,其中有两个视口-每个视口中都有一个文本块。

代码语言:javascript
运行
复制
<Grid>
    <StackPanel VerticalAlignment="Center" Orientation="Vertical" >
        <Viewbox Margin="100,0,100,0">
            <TextBlock x:Name="headerText" Text="Lorem ipsum dolor" Foreground="Black"/>
        </Viewbox>
        <Viewbox Margin="150,0,150,0">
            <TextBlock x:Name="subHeaderText" Text="Lorem ipsum dolor, Lorem ipsum dolor, lorem isum dolor, Lorem ipsum dolor, Lorem ipsum dolor, lorem isum dolor, " TextWrapping="Wrap" Foreground="Gray" />
        </Viewbox>
    </StackPanel>
</Grid>

我想要实现的是,顶部文本块是具有更大文本的标题。第二个文本块是具有较小文本的副标题。无论标题或副标题有多少文本,动态字体都应该变小/变大。我的问题是,我希望副标题是固定的宽度。这意味着,字体应该是标题的一个百分比(70%),并换行到多行,这取决于我有多少文本。我附上了到目前为止我拥有的代码...我漏掉了那个副标题的内容,我想不出是什么。干杯

编辑基本上我想要实现的是,副标题包装文本,以便它可以向下扩展它的字体是标题的70% -无论该字体有多大。

EN

Stack Overflow用户

发布于 2011-09-14 04:25:00

这在一定程度上解决了这个问题。没有ActualFontSize属性,但有一个与FontSize相关的ActualHeight。现在,这只是原始渲染的大小。我不知道如何将Converter注册为resize事件。实际上可能需要将FontSize注册为resize事件。请不要因为我的回答不完整而贬低我。我不能将代码样本放在注释中。

代码语言:javascript
运行
复制
    <Window.Resources>
        <local:WidthConverter x:Key="widthConverter"/>
    </Window.Resources>
    <Grid>
        <Grid>
            <StackPanel VerticalAlignment="Center" Orientation="Vertical" >
                <Viewbox Margin="100,0,100,0">
                    <TextBlock x:Name="headerText" Text="Lorem ipsum dolor" Foreground="Black"/>
                </Viewbox>
                <TextBlock Margin="150,0,150,0" FontSize="{Binding ElementName=headerText, Path=ActualHeight, Converter={StaticResource widthConverter}}" x:Name="subHeaderText" Text="Lorem ipsum dolor, Lorem ipsum dolor, lorem isum dolor, Lorem ipsum dolor, Lorem ipsum dolor, lorem isum dolor, " TextWrapping="Wrap" Foreground="Gray" />
            </StackPanel>
        </Grid>
    </Grid>        

转换器

代码语言:javascript
运行
复制
    [ValueConversion(typeof(double), typeof(double))]
    public class WidthConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            double width = (double)value*.7;
            return width; // columnsCount;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    } 
票数 4
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7406973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档