重用文本视图和网格
本文关键字:网格 视图 文本 | 更新日期: 2023-09-27 18:08:17
我正在开发windows phone 8应用程序。
我动态地创建多个Textview和Grid内For循环。
for (int j = 0; j < 300; j++)
{
Image image = new Image();
image.Source = new BitmapImage(new Uri("/Images/sample256.png", UriKind.RelativeOrAbsolute));
image.Tag = i.ToString();
Grid questionGrid = new Grid();
questionGrid.HorizontalAlignment = HorizontalAlignment.Center;
questionGrid.VerticalAlignment = VerticalAlignment.Center;
TextBlock question = new TextBlock();
question.TextWrapping = TextWrapping.Wrap;
question.TextAlignment = TextAlignment.Center;
question.Text = " this is the question and its id is Question" + i;
question.FontSize = 30;
question.Foreground = new SolidColorBrush(Colors.Black);
question.HorizontalAlignment = HorizontalAlignment.Center;
questionGrid.Children.Add(question);
Grid answerGrid = new Grid();
answerGrid.HorizontalAlignment = HorizontalAlignment.Center;
answerGrid.VerticalAlignment = VerticalAlignment.Center;
TextBlock answer = new TextBlock();
answer.TextWrapping = TextWrapping.Wrap;
answer.TextAlignment = TextAlignment.Center;
answer.Text = "this is answer and its id is Answer" + i;
answer.FontSize = 30;
answer.Foreground = new SolidColorBrush(Colors.Black);
answer.HorizontalAlignment = HorizontalAlignment.Center;
answerGrid.Children.Add(answer);
LayoutRoot.Children.Add(image);
LayoutRoot.Children.Add(questionGrid);
LayoutRoot.Children.Add(answerGrid);
}
正如你所看到的,我有大约300次进入,所以因为负载很重,当页面响应用户交互时有很多延迟。
如何降低负荷?这样我就可以发布动态创建的视图
基本上,您应该创建一个用户控件,而不是直接在页面cs代码中创建复杂的对象。在你的用户控制你预设的位置为你的元素,即,如果你想要它有一个图像和几个文本块,你只是把它们放在那里。这是一个模板。
然后,在循环中创建用户控件列表。
所以,你的代码看起来像:for (int j = 0; j < 300; j++)
{
SomeUserControl someUserControl = new SomeUserControl(constuctorValue1, constuctorValue2);
ListOfSomeUserControls.Add(someUserControl);
LayoutRoot.Children.Add(someUserControl);
}
其中ListOfSomeUserControls是在页面代码中定义的列表。
这里,你可以发送一些数据给构造函数,例如,someUserControl将是你的ImageUri或文本值。
或者,你可以在用户控件中创建一些属性来设置数据。
或者,你可以在用户控制中创建一些方法,比如ChangeImageUri()之类的
要使用这个动态创建的用户控件,你应该使用ListOfSomeUserControls[Index]。您也可以将此列表保存在某个地方以供以前使用。这是基本思想。
在您共享的链接中,OP创建了一个指向图像的链接列表。感受一下区别:他在页面上有5个图像框和300个链接的列表。所以,当你启动你的应用程序时你有这个:
Image1::listOfUris[1] Image2::listOfUris[2] Image3::listOfUris[3] Image4::listOfUris[4] Image5::listOfUris[5]
当你点击下一个按钮时,你只是将这个列表替换1。
Image1::listOfUris[2] Image2::listOfUris[3] Image3::listOfUris[4] Image4::listOfUris[5] Image5::listOfUris[6]