Windows phone 7 - 在GridView中重复显示重复的列

时间:2012-02-29 12:17:08

标签: windows-phone-7 gridview

我在WP7中使用GridView控件来显示来自独立存储的记录。我正在展示这些 页面加载事件的记录。 GridViewPage最初有4列 但是当我回到GridViewPage访问其他页面的gridview时 显示重复的列(这次是8列)。

下次再次回到GridViewPage,显示12列, 但我没有在相应的XAML页面中看到任何变化。

但是在将值分配给gridView的ItemSource之前,有一件事我将isostore中的记录存储到一个IList变量中,进行一些更改并将该IList变量分配给GridView的ItemSource。

private void GridViewPage_load(object sender,RoutedEventArgs r)         {             System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer();             dt.Interval = new TimeSpan(0,0,0,1,0); // 1秒             dt.Tick + = new EventHandler(dt_Tick);             dt.Start();         }

void dt_Tick(object sender,EventArgs e)         {             IList rawList = DBHelperMeeting.GetData();             int count = rawList.Count;             for(int i = 0; i< count; i ++)             {                 / *在以下行中我写了逻辑来获取日期和start_time                    表记录存储在IList variable-rawList中并形成DateTime                    变量                 * /                 string endDate = Convert.ToDateTime(rawList.ElementAt(i).Date.ToString())。ToShortDateString();                 endDate + =“”+ rawList.ElementAt(i).End_Time;

            string startDate = Convert.ToDateTime(rawList.ElementAt(i).Date.ToString()).ToShortDateString();
            startDate+=" "+rawList.ElementAt(i).Start_Time;


            if ((bool)rawList.ElementAt(i).Flag == true)
            {
                TimeSpan st = Convert.ToDateTime(startDate) - DateTime.Now;
                //MessageBox.Show(st.ToString());
                TimeSpan et = Convert.ToDateTime(endDate) - DateTime.Now;
                //MessageBox.Show(et.ToString());
                if (st.Seconds < 0)
                {
                    if (et.Seconds < 0)
                    {
                        rawList.ElementAt(i).Flag = false;
                        rawList.ElementAt(i).Rem_Time = "Meeting Finished";
                    }
                    else
                    {
                        rawList.ElementAt(i).Rem_Time = "Meeting Started";
                    }
                }
                else if (st.Minutes > 0 && ((st.Hours * 60) + (st.Minutes)) < 16)
                {
                    rawList.ElementAt(i).Rem_Time = st.Minutes.ToString() + " Min.";
                }

            }
        }
        GridView1.ItemsSource = rawList;
      }

实际上我想根据时间更新每条记录(即会议)的Rem_Time字段(Rem_Time显示会议的剩余时间)

1 个答案:

答案 0 :(得分:0)

即使您从其他页面返回,也会在加载所有页面组件时始终引发

Loaded事件。例如,您需要在构造函数中加载元素。