Как сделать так, чтобы StackPanel была такой же широкой, как ее содержимое? - PullRequest
0 голосов
/ 18 июня 2009

Следующий шаблон показывает динамическую информацию в цветной рамке.

Однако поле всегда имеет полную ширину DockPanel / экрана.

Я мог бы добавить фиксированную ширину в элемент Border, но тогда очень длинное имя клиента могло бы быть обрезано.

Как я могу сказать Границе, что она должна расширяться и сжиматься по ширине на основе ширины содержимого, что-то вроде элемента <table> в HTML?

HTML:

<table>
    <tr>
        <td style="background-color: #eee; padding: 5px">
            the table will be as wide as this text
        </td>
    </tr>
</table>

XAML:

<Window.Resources>
    <DataTemplate x:Key="CustomerTemplateShow">
        <Border CornerRadius="5" Background="#eee" Padding="5">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding FirstName}"/>
                <TextBlock Text=" "/>
                <TextBlock Text="{Binding LastName}"/>
            </StackPanel>
        </Border>
    </DataTemplate>
</Window.Resources>

<DockPanel LastChildFill="False" Margin="10">
    <ContentControl 
        DockPanel.Dock="Top"
        Content="{Binding SelectedCustomer}" 
        ContentTemplate="{StaticResource CustomerTemplateShow}"/>
</DockPanel>

1 Ответ

2 голосов
/ 18 июня 2009

Самый простой способ - установить горизонтальное выравнивание границы = "Центр" (или влево, или вправо, в зависимости от того, что вы предпочитаете для макета).

...