这是我的控制代码:
<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,现在每个元素看起来都像图片一样:
答案 0 :(得分:2)
我添加了
HorizontalContentAlignment="Stretch"
到
<prismvm:DataTemplateSelector
Content="{Binding NewTemplate}">
现在它运作正常。
答案 1 :(得分:0)
默认情况下,StackPanel不会拉伸以适合其父容器(在本例中为Grid的第0列,或者更确切地说是整个网格)。
在外部StackPanel上尝试:
<StackPanel Grid.Row="2" HorizontalAlignment="Stretch">
然后子TextBoxes有东西可以拉伸到。
如果有疑问,请在各种容器上设置不同的背景颜色,这样您就可以看到它们在运行时占用了多少空间。