Excel、MSWord、Outlook のようなカスタムの RibbonGallery コントロールがあります。
以下の Excel RibbonGallery 画像を参照してください。通常の選択はまだ存在します。
そして、RibbonGallery View 用と Popup 用の 2 つの ItemsSource を保持し、RibbonGallery と Popup View にアイテムを配置しました。
RibbonGallery でアイテムを選択すると、SelectedItem (オブジェクト) の選択が更新されます。ポップアップを開くと、RibbonGallery から ItemsSource をクリアし (Element が別の要素の問題の子を既に追加していることを避けるため)、それを Popup ItemsControl に再割り当てしました。ただし、ポップアップを開いたり閉じたりすると、選択したアイテムの選択がクリアされます。
private void UpdateItemsSource()
{
if (!this.IsDropDownOpen)
{
this.popupGalleryItemsControl.ItemsSource = null;
this.ribbonGalleryItemsControl.ItemsSource = this.ItemsSource;
}
else
{
this.ribbonGalleryItemsControl.ItemsSource = null;
this.popupGalleryItemsControl.ItemsSource = this.ItemsSource;
}
}
<ItemsControl x:Name="RibbonGalleryItemsControl"
ItemContainerStyle="{TemplateBinding ItemContainerStyle}"
ItemTemplate="{TemplateBinding ItemTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<ItemsControl x:Name="PopupItemsControl"
ItemContainerStyle="{TemplateBinding ItemContainerStyle}"
ItemTemplate="{TemplateBinding ItemTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
ItemsControl Tappedイベントから更新されたSelectedItem 。
新しいコレクションをコントロールに更新するときに選択を保持する方法を教えてください(RibbonGalleryからポップアップへ、RibbonGalleryへのポップアップ)。