2016-06-21 47 views
1

我们的应用程序以前是为Windows 8.1设计的。我们正在考虑将其移植到适用于Windows 10的通用Windows应用程序。通用Windows应用程序中奇怪的ListView行为

我们已注意到行为上的差异,特别是与ListView/ItemsControl

  • 倒塌的能见度现在是吃了空间。在Win 8.1中,展开的可见性没有额外的空间
  • ListViewItems的其他边距,特别是如果ItemsPanel是水平。似乎总是有大约10px的右边距。

奇怪的是,对于第2点,将其更改为的GridView解决保证金问题。虽然第一个子弹仍然存在。

有没有其他人遇到过这个问题,你是如何解决它的?

谢谢

编辑:代码以供参考:

<GridView Grid.Row="1" 
    ItemsSource="{Binding Path=Tables}"> 
<GridView.ItemContainerStyle> 
<Style TargetType="GridViewItem"> 
    <Setter Property="VerticalContentAlignment" Value="Top" /> 
    <Setter Property="Margin" Value="0" /> 
</Style> 
</GridView.ItemContainerStyle> 
<GridView.ItemTemplate> 
<DataTemplate> 
    <Grid Visibility="{Binding Path=ShowTable, Converter={StaticResource BoolToVisConverter}}"> 
     <!-- A lot of UI Element --> 
    </Grid> 
</DataTemplate> 
</GridView.ItemTemplate> 
<GridView.ItemsPanel> 
<ItemsPanelTemplate> 
    <ItemsStackPanel Orientation="Horizontal" /> 
</ItemsPanelTemplate> 
</GridView.ItemsPanel> 
</GridView> 

这是我的代码。我跟踪了它,网格的可见性工作正常(true/false,正确设置可见性)。问题是,即使“网格”隐藏,“GridViewItem”似乎仍然占用空间。看来GridViewItem的宽度不会改变。在Windows 8.1应用程序中,没有空格。

这是一个错误?

+0

折叠的物品不应占用空间。请分享一些代码。 ListBiewItem/GridViewItem在默认情况下为它们设置了一些间距。你必须改变* ItemContainerStyle *来摆脱它。 –

+0

谢谢凯,我提供了代码参考。我在那里有ItemContainerStyle,但它似乎仍然不正确。 – Water

回答

3

GridViewItems有一个默认的MinWidth定义。你必须在ItemContainerStyle中删除它。您可以检查默认模板here

<Setter Property="MinWidth" Value="0" /> 

我无法重现你追加保证金的问题。使用上面显示的代码,列表中的所有元素都彼此相邻。

+0

谢谢凯!这工作!我比较了Win8和Win10 ListViewItem的默认样式,并进行了很多更改,包括MinWidth。 现在我需要看看其他人,我有一个什么是错的想法。 – Water

相关问题