无法在堆栈面板中拉伸控件

时间:2011-11-18 13:57:23

标签: silverlight stretch

这是我的控制代码:

    <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>

问题是,在开始时文本框的宽度非常小,我需要宽度与网格相同。

我该怎么做?

修改 我已经更新了我的xaml,现在每个元素看起来都像图片一样:

enter image description here

2 个答案:

答案 0 :(得分:2)

我添加了

HorizontalContentAlignment="Stretch"

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

现在它运作正常。

答案 1 :(得分:0)

默认情况下,StackPanel不会拉伸以适合其父容器(在本例中为Grid的第0列,或者更确切地说是整个网格)。

在外部StackPanel上尝试:

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

然后子TextBoxes有东西可以拉伸到。

如果有疑问,请在各种容器上设置不同的背景颜色,这样您就可以看到它们在运行时占用了多少空间。