我有一大堆Integer项目,我希望在ListView中显示格式。通常在Android上我会扩展BaseAdapter(这是动态视图/控件创建的一个例子):
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView!=null){
//inflate convertView if it doesn't exist
}
MyView v = (MyView)convertView;
v.setId(position);
v.setNumber(myIntegerArray[position]);
return v;
}
我想知道如何在C#中为我的Windows应用商店应用做到这一点。我找不到关于这个主题的任何有意义的信息。
我不想每次都创建List(或其他ItemsSource对象),因为它会占用太多内存而且速度很慢(我必须刷新数组值)。
答案 0 :(得分:1)
基于XAML的UI技术具有一种称为UI Virtualization的功能,可以在处理基于项目的UI(ItemsControls)中显示的大量数据时减少内存消耗和处理时间。
为了实现这一点,在基础数据集中添加/删除/更改项目的同时保持更新UI的能力,您需要将DataBind UI设置为ObservableCollection<T>
:< / p>
<ListBox ItemsSource="{Binding}"/>
代码背后的代码:
var numbers = Enumerable.Range(0,100);
DataContext = new ObservableCollection<int>(numbers);
请记住,基于XAML的UI技术中基于DataBinding的声明性方法与其他框架中的过程方法完全不同。在XAML中,从不需要在过程代码中创建UI元素,您在XAML中定义它们然后将UI绑定到相关的数据项集合和UI框架照顾其他人。