调整控件的宽度和高度以包装其内容

时间:2015-01-24 23:59:27

标签: c# windows-phone windows-phone-8.1

如何将Windows Phone控件的宽度/高度设置为包装其内容所需的最小值? 在Android中我会用以下方式完成它:

android:layout_width="wrap_content"

谢谢

3 个答案:

答案 0 :(得分:2)

您可以使用ViewBox。这将缩放内部内容以适应可用空间。

<ViewBox>
    <Grid Width="Auto" Height="Auto"> 
    <!-- Your content goes here -->
    <Grid/>
<ViewBox/>

答案 1 :(得分:1)

控件有一些你可以使用的属性: MinWidth MaxWidth Width ,一些带文本内容的控件也有 TextWrapping TextTrimming 。通过使用那些你可能会实现你想要的 - 一些例子:

<StackPanel Margin="20">
    <StackPanel.Resources>
        <Style TargetType="Border">
            <Setter Property="BorderBrush" Value="Red"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="HorizontalAlignment" Value="Left"/>
            <Setter Property="Margin" Value="0,0,0,10"/>
        </Style>
        <Style TargetType="TextBlock">
            <Setter Property="HorizontalAlignment" Value="Left"/>
            <Setter Property="FontSize" Value="20"/>
            <Setter Property="Text" Value="Simple long description"/>
        </Style>
    </StackPanel.Resources>
    <Border> <!-- Implicit width -->
        <TextBlock Width="150"/>
    </Border>
    <Border> <!-- Implicit width with text wrapping -->
        <TextBlock Width="150" TextWrapping="Wrap"/>
    </Border>
    <Border> <!-- Auto width -->
        <TextBlock Width="Auto"/>
    </Border>
    <Border> <!-- Auto width but with limit -->
        <TextBlock Width="Auto" MaxWidth="180"/>
    </Border>
    <Border> <!-- Short text with min width -->
        <TextBlock Width="Auto" MinWidth="100" Text="Min"/>
    </Border>
    <Button> <!-- Button with wrapped text -->
        <TextBlock Width="120" TextWrapping="Wrap"/>
    </Button>
</StackPanel>

结果:

enter image description here

在某些情况下,您可能还会使用HorizontalAlignment = Stretch来设置控件的宽度为可用空间。

答案 2 :(得分:0)

您可以使用相应控件的width="Auto"height="Auto"属性。

例如

<StackPanel>
    <TextBlock x:Name="textBlock" Width="Auto" Text="Sample Text" />
</StackPanel>