2

我在这里构建了一个小型 WPF 应用程序。这一切都严格使用 MVVM 构建,只使用链接到视图模型类型的 DataTemplates。

我已经看到很多关于如何拉伸和剪辑ListBoxes 的内容以便项目填充其父项的问题。经过大量试验后,我设法解决了这个问题,但现在我发现自己处于相同的场景中,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但似乎没有效果。我还有什么需要做的吗?

谢谢

4

1 回答 1

2

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

于 2012-04-30T09:09:04.550 回答