Wpf 拉伸ItemsControl的项

Wpf 拉伸ItemsControl的项,wpf,datatemplate,itemscontrol,Wpf,Datatemplate,Itemscontrol,我正在这里建立一个小WPF应用程序。它完全是用MVVM构建的,只使用链接到视图模型类型的数据模板 我已经看到了很多关于如何拉伸和剪裁ListBoxes的内容以使项目填充其父项的问题。经过大量的实验后,我设法解决了这个问题,但现在我发现自己在使用ItemsControl时遇到了同样的情况,但同样的技巧似乎不起作用 下面是一个正在使用的数据模板(一个简单的文本框)。请注意我是如何尝试设置水平对齐的 <DataTemplate DataType="{x:Type vm:OneOfMyViewMo

我正在这里建立一个小WPF应用程序。它完全是用MVVM构建的,只使用链接到视图模型类型的数据模板

我已经看到了很多关于如何拉伸和剪裁
ListBox
es的内容以使项目填充其父项的问题。经过大量的实验后,我设法解决了这个问题,但现在我发现自己在使用
ItemsControl
时遇到了同样的情况,但同样的技巧似乎不起作用

下面是一个正在使用的
数据模板
(一个简单的
文本框
)。请注意我是如何尝试设置
水平对齐的

<DataTemplate DataType="{x:Type vm:OneOfMyViewModelTypes}">
    <TextBox 
        Text="{Binding Path=Value}"
        HorizontalAlignment="Stretch"
        />
</DataTemplate>
<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>
我使用了颜色来查看控件的大小。
网格
为灰色,
项控件
为深灰色

这就是结果

从颜色中可以看出,包含
的网格
会拉伸,而
项控件
不会拉伸。我确实将其
水平对齐
属性设置为
拉伸
,但似乎没有效果。还有什么我需要做的吗


谢谢

您的主(外部)网格中有两列,但您只使用第一列。
第二列使用了所有剩余的空间。

Lester:我错误地认为我需要外部网格才能为其列使用共享大小范围。如您所见,我确实将每个项目的两个元素绑定到两列中的一列。显然,我可以在没有外部网格的情况下使用此功能,这使得ItemsControl按预期拉伸。但是项目(DataTemplate的文本框)仍然会自动调整大小以适应其自身的内容。