代码之家  ›  专栏  ›  技术社区  ›  Jerry Nixon

重新渲染VariableSizedWrapGrid

  •  0
  • Jerry Nixon  · 技术社区  · 12 年前

    一旦VariableSizedWrapGrid渲染了其内容,是否有方法刷新其布局,以便在大小发生更改时重新渲染和应用大小?

    例如,第一项的大小是其余项的两倍,然后我在视图模型中更改了列和行跨度值。现在我想调用网格来重新渲染。

    1 回复  |  直到 12 年前
        1
  •  0
  •   Jerry Nixon    12 年前

    这里有一个简单的方法:

    public void Update(GridView gridView)
    {
        if (!(gridView.ItemsPanelRoot is VariableSizedWrapGrid))
            throw new ArgumentException("ItemsPanel is not VariableSizedWrapGrid");
        foreach (var container in gridView.ItemsPanelRoot.Children.Cast<GridViewItem>())
        {
            var data = container.Content as Common.ModelBase;
            VariableSizedWrapGrid.SetRowSpan(container, data.RowSpan);
            VariableSizedWrapGrid.SetColumnSpan(container, data.ColSpan);
        }
        gridView.ItemsPanelRoot.InvalidateMeasure();
    }
    
    1. 假设Windows.UI.Xaml.Controls.GridView为ItemsControl
    2. 假设Windows.UI.Xaml.Controls.VariableSizedWrapGrid为ItemPanel

    我将其集成到自定义网格中,如下所示: http://codepaste.net/aopvks

    祝你好运!

    推荐文章