【问题标题】:Silverlight: Set MaxWidth of a textblock to containing column widthSilverlight:将文本块的 MaxWidth 设置为包含列宽
【发布时间】:2010-12-02 12:55:40
【问题描述】:

在我的 Silverlight 4 应用程序中,我有一个简单的 3 列网格,其中包含 3 个文本块。

        <Grid Background="{StaticResource BrushCharacteristicListBoxItemBackground}">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.5*"/>
                <ColumnDefinition Width="10"/>
                <ColumnDefinition Width="0.5*"/>
            </Grid.ColumnDefinitions>
            <TextBlock x:Name="TextBlockCharacteristicName" Text="{Binding Property1}" HorizontalAlignment="Left" TextTrimming="WordEllipsis" ToolTipService.ToolTip="{Binding Text}" Margin="6,0,0,0" />
            <TextBlock x:Name="TextBlockSeperator" Text="=" Grid.Column="1" />
            <TextBlock x:Name="TextBlockCharacteristicValue" Text="{Binding Property3}" Grid.Column="2" HorizontalAlignment="Right" Margin="0,0,6,0" />
        </Grid>

Grid 的宽度取决于包含的用户控件。现在我想将第一个和第三个文本块的大小限制为其包含列的当前大小,可能使用 MaxSize 并以某种方式将其绑定到网格列的大小。

这里有人可以告诉我怎么做吗?

提前致谢,
弗兰克

【问题讨论】:

    标签: silverlight expression-blend


    【解决方案1】:

    默认情况下,TextBlockHorizontalAlignment 属性设置为“拉伸”,因此无论其内容如何,​​它都会填充其所在列的可用大小。这就是你想要的吗?

    也许出于某种原因,如果 TextBlock 的内容不需要所有可用空间,您不希望 TextBlock 与它所在的 Column 一样宽?

    如果是这样,请将TextBlock.HorizontalAlignment 设置为“左”。然后,TextBlock 的宽度将仅与所需的宽度一样直到达到列的宽度,然后其宽度将受到列的限制。

    【讨论】:

    • 这也是我的想法,实际上我的 TextBlock (TextBlockCharacteristicName) 的 Horizo​​ntalAlignement 设置为左​​。尽管如此,TextBlock 的大小不受列宽的限制,但会推动列的宽度以适应文本块的大小
    • @Aaginor:我的猜测是您在 ListBox 中呈现这些网格。为了使 * 大小有意义,放置 Grid 的包含元素必须限制其内容的大小。 ListBox 在内部将内容放置在 ScrollViewer 中,根据定义,它不会对内容的宽度和高度施加任何限制。
    • 嗯,你猜对了!我不认为那很重要。那么,在那种情况下有没有机会实现尺寸的约束呢?我曾考虑将 MaxWidth 设置为 {Binding Grid.Column[0].ActualWidth},但没有找到任何可行的解决方案。
    猜你喜欢
    • 2012-04-30
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多