以下は、ボタンのリストを生成するマークアップです。
<ItemsControl x:Name="Items" Grid.Row="5" Grid.ColumnSpan="2">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ToggleButton Content="{Binding Name}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
フィルタリング基準を使用してボタンに適用されるフィルタリングがあります
collectionView = (CollectionView)CollectionViewSource.GetDefaultView(Items.ItemsSource);
collectionView .Filter = FilterList;
問題は、フィルターの状態を切り替えるときにチェックされたボタンの状態を保持したいということです。イベント StatusChanged にサブスクライブしようとしました
Items.ItemContainerGenerator.StatusChanged += new System.EventHandler(ItemContainerGenerator_StatusChanged);
ただし、ステータスが ContainersGenerated の時点でコントロールが生成されていないようです
void ItemContainerGenerator_StatusChanged(object sender, System.EventArgs e)
{
if (Items.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated)
{
RefreshButtons();
}
}