【问题标题】:Re-render a VariableSizedWrapGrid重新渲染一个 VariableSizedWrapGrid
【发布时间】:2014-08-07 07:33:44
【问题描述】:

一旦 VariableSizedWrapGrid 渲染了它的内容,有没有办法刷新它的布局,以便它重新渲染并重新应用大小(如果它们发生了变化)?

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

【问题讨论】:

    标签: xaml winrt-xaml


    【解决方案1】:

    这里有一个简单的方法:

    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

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-17
      • 2017-05-24
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2014-06-03
      • 1970-01-01
      相关资源
      最近更新 更多