我ListView
绑定了一个数据实例
ObservalbeCollection<ActivityItem> ActivityItems
<ListView
x:Name="ActivityItemsList"
ItemsSource="{Binding ActivityItems}"
ItemTemplate="{StaticResource Herke80ItemTemplate}"
Header="{Binding DateFilterListBox.SelectedItem}" />
当我运行过滤器时,我想在 ListView 中选择绑定到 ActivityItem 的 ListViewItem,并根据所选过滤器更改其可见性。
我通过保留另一个 ObservableCollection 实例来做到这一点,这意味着数据实例被复制了。然后我相应地删除或添加了项目。这占用了大量的加载时间。所以我想我会尝试保持一个绑定,并禁用或启用 UI 元素。
foreach (ActivityItem activityItem in ActivityItemsList.Items)
{
if (activityItem == null) continue;
var index = ActivityItemsList.Items.IndexOf(activityItem);
(ActivityItemsList.Items[index] as ListViewItem).Visibility = Visibility.Collapsed;
int startComparer = DateTime.Compare(activityItem.Start, selectedStartDate);
int endComparer = DateTime.Compare(selectedEndDate, activityItem.End);
if (OverdueToggleSwitch.IsOn)
{
(ActivityItemsList.Items[index] as ListViewItem).Visibility = Visibility.Visible;
}
else
{
if (startComparer >= 0 && endComparer >= 0)
{
(ActivityItemsList.Items[index] as ListViewItem).Visibility = Visibility.Visible;
}
}
}
ex 是 NullReferenceException,因为 ListViewItem 实际上不是 ListViewItem 而是 ActivityItem。
这样做的替代方法或正确方法是什么?