Uwp UI使用旧组件的值
是我创建的演示代码 当我在Uwp UI使用旧组件的值,uwp,binding,uwp-xaml,Uwp,Binding,Uwp Xaml,是我创建的演示代码 当我在ObservableCollection中删除一个元素,然后插入一个新元素时,新元素的UI似乎以某种方式显示了被删除元素的值 例如,当我单击删除按钮,然后单击添加按钮时,应该有一个新的TestTemplate对象,其值为nullInnerTestTemplate。但是,新对象仍将具有已删除元素的旧InnerTestTemplate值 此外,我发现在新创建TestTemplate时,并不总是调用InitializeComponent()。也就是说,当我选中最上面的复选框时
ObservableCollection
中删除一个元素,然后插入一个新元素时,新元素的UI似乎以某种方式显示了被删除元素的值
例如,当我单击删除按钮,然后单击添加按钮时,应该有一个新的TestTemplate
对象,其值为nullInnerTestTemplate
。但是,新对象仍将具有已删除元素的旧InnerTestTemplate
值
此外,我发现在新创建
TestTemplate
时,并不总是调用InitializeComponent()
。也就是说,当我选中最上面的复选框时,单击“删除”按钮,然后单击“添加”按钮,最上面复选框的复选框保持选中状态,这是不应该选中的。您需要为InnerTestTemplate
类和TestTemplate
类添加构造函数,然后,TestTemplate
对象将有一个nullInnerTestTemplate
值
public InnerTestTemplate()
{
//......
}
public TestTemplate()
{
_innerTestTemplate = new InnerTestTemplate();
}
关于重复使用已删除的复选框
,如果列表视图
中的项目数不多,您可以取消虚拟化列表视图
。在列表视图
中添加以下代码,该视图使用堆栈面板
替换默认代码:
<ListView ……>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
……
</ListView.ItemTemplate>
</ListView>
……
谢谢您的回答。据介绍,ListView
的虚拟化更像是如何以及何时呈现ListView
中的项目。这就是为什么新的复选框显示旧复选框的值的原因吗?