Silverlight:将文本块的MaxWidth设置为包含列宽

时间:2010-12-02 12:55:40

标签: silverlight expression-blend

在我的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并以某种方式将其绑定到网格列的大小。

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

提前致谢,
弗兰克

1 个答案:

答案 0 :(得分:1)

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

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

如果是这样,请将TextBlock.HorizontalAlignment设置为“左”。然后,TextBlock将只有所需的宽度,直到达到列的宽度,然后其宽度将受到列的约束。