Wpf ListView虚拟化值在回收模式下重复
我对启用虚拟化的ListView控件有一个奇怪的问题。我创建了一个非常小的试点应用程序来重现这个问题。当我在listview中为几个文本框键入内容,然后向下滚动时,在几页之后,键入的值会在下面未触及的文本框中重复 以下是窗口的XAML:Wpf ListView虚拟化值在回收模式下重复,wpf,listview,virtualization,recycle,Wpf,Listview,Virtualization,Recycle,我对启用虚拟化的ListView控件有一个奇怪的问题。我创建了一个非常小的试点应用程序来重现这个问题。当我在listview中为几个文本框键入内容,然后向下滚动时,在几页之后,键入的值会在下面未触及的文本框中重复 以下是窗口的XAML: 真的 回收 以及背后的代码: namespace WpfApplication3 { public partial class MainWindow : Window { public MainWindow()
真的
回收
以及背后的代码:
namespace WpfApplication3
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
demolist a = new demolist();
mainGrid.DataContext = a;
}
}
public class demolist
{
public demolist()
{
DemoList = new List<string>();
for (int i = 0; i <= 5000; i++)
{
DemoList.Add("sss");
}
}
public List<string> DemoList { get; set; }
}
}
命名空间WpfApplication3
{
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
demolist a=新的demolist();
mainGrid.DataContext=a;
}
}
公共类人口统计
{
公共人口名单()
{
DemoList=新列表();
对于(inti=0;i来说,这当然是一个奇怪的效果,但这似乎是由于回收模式加上您没有将TextBox.Text属性绑定到任何东西
像这样更改代码(很抱歉更改了名称),一切都会好起来:
public class RecyclingListViewModel
{
public RecyclingListViewModel()
{
Items = new List<DataItem>();
for (int i = 0; i <= 5000; i++)
{
Items.Add(new DataItem{Id = i, Name = i.ToString(CultureInfo.InvariantCulture)});
}
}
public List<DataItem> Items { get; set; }
}
public class DataItem
{
public int Id { get; set; }
public string Name { get; set; }
}
<ListView ItemsSource="{Binding Path=Items}" >
<TextBox MinHeight="20" MinWidth="200" Margin="4" Text="{Binding Name}"/>
公共类回收列表视图模型
{
公共回收列表视图模型()
{
项目=新列表();
对于(inti=0;我感谢您的回答。您的代码执行正确,这意味着只有当您绑定控件上的所有内容时,才能使用回收模式。