データのインスタンスへのListView
バインドがあります
ObservalbeCollection<ActivityItem> ActivityItems
<ListView
x:Name="ActivityItemsList"
ItemsSource="{Binding ActivityItems}"
ItemTemplate="{StaticResource Herke80ItemTemplate}"
Header="{Binding DateFilterListBox.SelectedItem}" />
フィルターを実行するときに、ListView 内の ActivityItem にバインドされた ListViewItem を選択し、選択したフィルターに応じてその可視性を変更したいと考えています。
別の ObservableCollection インスタンスを保持することでこれを行っていました。つまり、データ インスタンスが複製されました。その後、それに応じてアイテムを削除または追加しました。これにより、ロード時間がかなりかかりました。そこで、1 つのバインディングを維持し、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 であるためです。
これを行う代替または正しい方法は何ですか?