UWP ItemsControl 内容不像 WPF 中那样拉伸

Posted

技术标签:

【中文标题】UWP ItemsControl 内容不像 WPF 中那样拉伸【英文标题】:UWP ItemsControl content not stretching as in WPF 【发布时间】:2016-06-28 07:09:05 【问题描述】:

我在 UWP 项目中遇到了一些我无法理解的行为,但是我在 WPF 中的实现按预期工作。

如果我有一个 StackPanel,并插入一些网格,网格会按预期拉伸以填充 StackPanel 的宽度。

<StackPanel Grid.Row="1">
    <Grid Background="Blue">
        <TextBlock>Item 1</TextBlock>
    </Grid>
    <Grid Background="Green">
        <TextBlock>Item 2</TextBlock>
    </Grid>
    <Grid Background="Red">
        <TextBlock>Item 3</TextBlock>
    </Grid>
    <Grid Background="Pink">
        <TextBlock>Item 4</TextBlock>
    </Grid>
</StackPanel>

但是,一旦我尝试引入绑定和集合,这种行为就会停止发生。

<ItemsControl ItemsSource="Binding Devices" Grid.Row="1">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid Background="Violet">
                <TextBlock>Hello</TextBlock>
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

我发现了可追溯到 2010 年的类似问题,但迄今为止没有任何解决方案有效。我还发现了这里报告的关于 UWP Grid 的问题,通常用于其他环境。我尝试过使用 ListBox(在这方面的行为相同)、设置 Horizo​​ntalContentAlignment、使用样式,因为 Silverlight 用户似乎从中找到了乐趣,并改变了我表达我的 ItemsControl 的方式。到目前为止没有任何工作,我觉得 UWP 中的 XAML 有问题,因为我似乎在 WPF 中根本没有遇到任何问题。是否存在已知问题,或者我只是以错误的方式解决这个问题?

我只是想让子网格拉伸以水平填充。我应该提一下:

    如果我将网格包裹在 ViewBox 中,它确实会起作用,但这是不可取的,因为它会产生其他不利影响。

    如果我在 XAML 中单击层次结构中的所有内容,从 ItemsControl 开始,围绕此选择呈现的框是全宽的,一直到(不包括)DataTemplate。 DataTemplate 和 Grid 显示了一个紧密绑定的框,但如果我查看属性检查器,则 Grid 的水平对齐方式为拉伸。这让我相信 DataTemplate 正在用没有 Horizo​​ntalAlignment="Stretch" 的东西包裹网格,而我没有已知的机制来改变它。

【问题讨论】:

【参考方案1】:

这种行为似乎只出现在 Visual Studio 和 Expression Blend 的设计器中。一旦在手机和桌面上构建并执行,一切似乎都可以正确呈现。

我通常与设计师有很好的经验,没想到会是这样。如果我只是忽略了设计师并取得了进步,我会更快意识到这一点。我已通过 VisualStudio 反馈工具报告了此问题。

【讨论】:

以上是关于UWP ItemsControl 内容不像 WPF 中那样拉伸的主要内容,如果未能解决你的问题,请参考以下文章

WPF下Itemscontrol分组 样式

WPF - ItemsControl - 如何找到ItemTemplate中的“CheckBox”项?

WPF ItemsControl ListBox ListView比较

WPF NotifyIcon 中 ItemsControl 中按钮的命令绑定

[UWP]使用Reveal

WPF ItemsControl DataTrigger EnterActions动画未启动