C# 如何在Windows Phone应用程序中虚拟化简单stackpanel中的数据

C# 如何在Windows Phone应用程序中虚拟化简单stackpanel中的数据,c#,xaml,windows-phone-7,windows-phone-8,virtualization,C#,Xaml,Windows Phone 7,Windows Phone 8,Virtualization,我用ScrollViewer和stackpanel创建了一个列表。我正在将用户控件从codebehind添加到此stackpanel。 我希望虚拟化数据,以提高应用程序的性能。 我怎样才能做到这一点 我无法使用Listbox,因为我正在将用户控件添加为数据项,并且每个用户控件都有不同的宽度和高度。。请建议如何实施 代码: XAML C# for(int count=0;count

我用ScrollViewer和stackpanel创建了一个列表。我正在将用户控件从codebehind添加到此stackpanel。
我希望虚拟化数据,以提高应用程序的性能。
我怎样才能做到这一点

我无法使用Listbox,因为我正在将用户控件添加为数据项,并且每个用户控件都有不同的宽度和高度。。请建议如何实施 代码:

XAML


C#

for(int count=0;count
我不认为在ScrollViewer中使用StackPanel是个好主意。 你不应该那样做

有两个控件可以执行您想要的操作,ListBox和ListView


如果您真的想在ScrollViewer中使用stackpanel,只需将stackpanel替换为VirtualzingStackPanel即可。但同样,您不应该这样做。

使用列表框。检查一下。例如,在xaml中定义ListBox

<ListBox x:Name="MyList">

然后在代码背后

var MyListData = new List<ChannelNewsLstControl>();
MyListData.Add(new ChannelNewsLstControl {name = "MyFirstChannelName});
MyList.ItemsSource=MyListData;
var MyListData=new List();
添加(新的channelnewsltcontrol{name=“MyFirstChannelName});
MyList.ItemsSource=MyListData;
如果您确实有很多项,我建议您使用它,因为它比普通的ListBox快得多(至少对于wp7来说),并且支持虚拟化和异步加载。示例将非常相似,因为组件继承了ListBox并添加了前面提到的自己的功能

编辑:最终答案:


尝试在ItemTemplate中放置一个网格,并设置其行定义。Height=“Auto”“

我相信Silverlight中不存在ListView,我不能使用ListView或listbox,因为我的控件列表大小不同。”。。项目的高度和宽度不一致。我正在尝试使用绑定用户控件创建数据列表,因为每个项目都是不同的用户控件,我无法使用Listbox或listview,因为每个数据项的大小不同。我使用了scrollviwer和stackpanel,并从代码绑定中添加了这些用户控件,但我无法实现可视化。如何实现可视化?如果我使用列表框,所有数据项都需要具有特定的大小,我的限制是每个数据项都有不同的高度。如何在Listbox中实现这一点或改进scrollviewer和stackpanel?我认为,这一点非常接近您的情况:。您需要做的是使用VerticalContentAlignment(如果我们讨论的是高度)和ItemContainerStyle(虽然,在我的类似案例中没有必要)。今天进行了一些调查。如果您希望您的项目占用尽可能小的空间,只需在数据模板内部使用StackPanel。是的,我尝试过,但如何根据需要更改我的项目模板的高度和宽度。。。我可以使用Variablesizewrapgrid,如果项目有多个高度和宽度,但即使不是这样。。。这取决于文本内容的不同…啊,我明白你的意思了。尝试在ItemTemplate中放置一个网格,并设置其RowDefinition.Height=“Auto”。这里有一些细节()
<ListBox x:Name="MyList">
var MyListData = new List<ChannelNewsLstControl>();
MyListData.Add(new ChannelNewsLstControl {name = "MyFirstChannelName});
MyList.ItemsSource=MyListData;