我在这里构建了一个小型 WPF 应用程序。这一切都严格使用 MVVM 构建,只使用链接到视图模型类型的 DataTemplates。
我已经看到很多关于如何拉伸和剪辑ListBox
es 的内容以便项目填充其父项的问题。经过大量试验后,我设法解决了这个问题,但现在我发现自己处于相同的场景中,ItemsControl
但相同的技巧似乎不起作用。
这是DataTemplate
正在使用的 s 之一(一个简单的TextBox
)。请注意我如何尝试设置HorizontalAlignment
...
<DataTemplate DataType="{x:Type vm:OneOfMyViewModelTypes}">
<TextBox
Text="{Binding Path=Value}"
HorizontalAlignment="Stretch"
/>
</DataTemplate>
这是ItemsControl
里面Grid
...
<Grid Background="Gray">
<Grid.Margin>
<Thickness
Left="{StaticResource ConfigurationDefaultMargin}"
Right="{StaticResource ConfigurationDefaultMargin}"
Bottom="{StaticResource ConfigurationDefaultMargin}"
Top="{StaticResource ConfigurationDefaultMargin}"
/>
</Grid.Margin>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="_key" Width="Auto"/>
<ColumnDefinition SharedSizeGroup="_value" Width="*"/>
</Grid.ColumnDefinitions>
<ItemsControl
Background="DimGray"
Grid.IsSharedSizeScope="True"
ItemsSource="{Binding Path=Configuration, Mode=OneWay}"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="_key"/>
<ColumnDefinition SharedSizeGroup="_value"/>
</Grid.ColumnDefinitions>
<TextBlock
Style="{StaticResource ExtensionConfigurationLabel}"
Grid.Column="0"
Margin="5,5,5,0"
Text="{Binding Path=Caption}"
/>
<ContentPresenter
Grid.Column="1"
HorizontalAlignment="Stretch"
Margin="5,5,5,0"
Content="{Binding}"
/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
我已经使用颜色来查看控件的大小。Grid
是灰色的,而是ItemsControl
深灰色的。
这是结果...
正如您从颜色中看到的那样,包含Grid
延伸而ItemsControl
没有延伸。我确实将其HorizontalAlignment
属性设置为,Stretch
但似乎没有效果。我还有什么需要做的吗?
谢谢