Не удается растянуть элемент управления в стеке - PullRequest
0 голосов
/ 18 ноября 2011

Вот фрагмент моего контрольного кода:

    <telerik:RadWindow>
    <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="20"/>
                <RowDefinition Height="20"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="40"/>
            </Grid.RowDefinitions>
   <StackPanel Grid.Row="2" HorizontalAlignment="Stretch" Background="Blue">
            <Grid
    x:Name="DetailsGrid">
                <prismvm:DataTemplateSelector
        Content="{Binding NewTemplate}">
                    <prismvm:DataTemplateSelector.Resources>
                        <DataTemplate
                x:Key="EmailMessageTemplate">
                            <StackPanel Orientation="Vertical"  HorizontalAlignment="Stretch" Background="Red">
                                <TextBlock Text="Name: "/>
                                <TextBox Text="{Binding Name,Mode=TwoWay}" HorizontalAlignment="Stretch" Background="Green"/>
                                <TextBlock Text="Subject: "/>
                                <TextBox Text="{Binding EmailSubject,Mode=TwoWay}" HorizontalAlignment="Stretch"/>
                                <TextBlock Text="Body: "/>
                                <TextBox Text="{Binding Body,Mode=TwoWay}" TextWrapping="Wrap"/>

                            </StackPanel>

                            </DataTemplate>
                            <DataTemplate
                    x:Key="SmsMessageTemplate">
                                <StackPanel Orientation="Vertical">
                                    <TextBlock Text="Subject: "/>
                                    <TextBox Text="{Binding Name,Mode=TwoWay}"/>
                                    <TextBlock Text="Sms body: "/>

                                    <TextBox Text="{Binding Body,Mode=TwoWay}"/>

                                </StackPanel>

                            </DataTemplate>

                        </prismvm:DataTemplateSelector.Resources>
                    </prismvm:DataTemplateSelector>
                </Grid>
            </StackPanel>
    </telerik:RadWindow>

Проблема в том, что в начале ширина текстовых полей очень мала, и мне нужно, чтобы ширина была такой же, как у сетки.

Как я могу это сделать?

EDIT Я обновил свой xaml, и теперь каждый элемент выглядит так:

enter image description here

Ответы [ 2 ]

2 голосов
/ 20 ноября 2011

Я добавил

HorizontalContentAlignment="Stretch"

к

<prismvm:DataTemplateSelector
        Content="{Binding NewTemplate}"> 

и теперь он работает нормально.

0 голосов
/ 18 ноября 2011

StackPanel не растягивается, чтобы соответствовать родительскому контейнеру по умолчанию (в данном случае столбец 0 сетки, или, скорее, вся сетка).

Попробуйте это на внешней StackPanel:

<StackPanel Grid.Row="2" HorizontalAlignment="Stretch">

Тогда дочерним текстовым полям есть, что растянуть.

Если вы сомневаетесь, установите разные цвета фона для ваших различных контейнеров, чтобы вы могли видеть, сколько места они занимают во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...