隐藏GridViewItem并重新定位GridView中的项目

16 浏览
0 Comments

隐藏GridViewItem并重新定位GridView中的项目

如上所示,我需要它重新对齐自己。显然这些项仍然存在,有没有办法完全忽略它们?

我有一个ObservableCollection:

public static volatile ObservableCollection MyVideoModels = new ObservableCollection();

这个集合被填充了MyVideo对象。

将其绑定到GridView上,代码如下:

public VideosFoundView()

{

this.InitializeComponent();

this.AddVideoFolderGridView.ItemsSource = VideosFoundView.MyVideoModels;

}

我在GridView中使用的DataTemplate如下:

我在GridView上方有一个静态的ToggleSwitch,代码如下:

它的功能是:

private void ignoreImages_Toggled(object sender, RoutedEventArgs e)

{

ToggleSwitch tSwitch = (ToggleSwitch)(sender as ToggleSwitch);

if (tSwitch.IsOn)

{

for(int i = 0; i < VideosFoundView.MyVideoModels.Count; i++)

{

if(VideosFoundView.MyVideoModels[i].FullImageLocationOnDisk == "ms-appx:///Assets/image-not-found.gif")

{

var gridViewItem = (GridViewItem)this.AddVideoFolderGridView.ContainerFromIndex(i);

gridViewItem.Visibility = Visibility.Collapsed;

}

}

}

else

{

for (int i = 0; i < VideosFoundView.MyVideoModels.Count; i++)

{

//VideosFoundView.MyVideoModels[i].Visibility = "Auto";

var gridViewItem = (GridViewItem)this.AddVideoFolderGridView.ContainerFromIndex(i);

gridViewItem.Visibility = Visibility.Visible;

}

}

}

然而问题是,这些项仍然在我的GridView上占据空间,并且其他项没有相应地重新定位。

0
0 Comments

在这个问题中,GridViewItem被折叠时仍然占用GridView上的空间。这可能是因为ItemTemplate没有被刷新,空间仍然被保留。

解决方法是使用WinRTXamlToolkit项目中的UWP版本的Toolkit的WrapPanel。你可以从NuGet获取它。

在你的Page中添加以下前缀:

xmlns:toolkit="using:WinRTXamlToolkit.Controls"

然后你可以像以前一样使用

例如:


    
        
            
            
        
    
    
        
            
                
            
        
    

0
0 Comments

从这里解决方案:Not showing items with Visibility=Collapsed in Windows 8.1 GridView

tldr:

编辑GridView的模板,并将ItemsPanelTemplate中的ItemsWrapGrid替换为WrapPanel,可以在这里找到http://codepaste.net/8gr5go

问题的原因是在Windows 8.1的GridView中,当GridViewItem的Visibility属性设置为Collapsed时,该项仍然会占用空间并保留在布局中。这可能导致布局上的问题,因为隐藏的项仍然会影响其他项的位置。

解决方法是编辑GridView的模板,并将ItemsPanelTemplate中的ItemsWrapGrid替换为WrapPanel。这可以通过以下步骤完成:

1. 打开XAML文件中的GridView部分。

2. 在GridView的属性中找到ItemsPanelTemplate。

3. 在ItemsPanelTemplate中,找到并编辑ItemsWrapGrid。

4. 将ItemsWrapGrid替换为WrapPanel。

5. 保存并关闭XAML文件。

下面是示例代码:


    
        
            
        
    

通过以上步骤,GridView中的Collapsed项将不再占用空间,并且其他项将重新布局以填补已隐藏项的空间。这解决了隐藏GridViewItem并重新定位GridView中的项的问题。

0