Я ищу хороший способ отображать один элемент из коллекции за один раз в Silverlight, не показывая пользовательский интерфейс для выбора элемента. Это будет похоже на TabControl без вкладок или комбинированный список без раскрывающегося списка.
Сейчас мы используем стиль TabControl, чтобы скрыть вкладки, но это похоже на хак. Есть ли более естественный способ сделать это в Silverlight?
Вот функции, которые я ищу:
- Показывать только выбранный элемент.
- Не отображать пользовательский интерфейс для выбора элемента. (Выбор будет изменен в зависимости от действий пользователя в другой части пользовательского интерфейса приложения.)
- Привязка данных к коллекции моделей представления.
- Использование DataTemplate для отображения представления для каждой модели представления.
- Сохранение состояния просмотра для каждого выбранного элемента. (Например, предположим, что внутри нашего элемента управления по одному элементу времени мы отображаем дерево параметров для выбранного элемента. Я бы хотел, чтобы развернутое / свернутое состояние узлов дерева отслеживалось отдельно для каждого элемента .)
Я пытался просто использовать ContentPresenter, привязанный к выбранному элементу:
<ContentPresenter Content="{Binding SelectedItem}">
<ContentPresenter.ContentTemplate>
<DataTemplate>
<MyUserControl />
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
Но, похоже, для этого используется один экземпляр MyUserControl, связывающий один и тот же экземпляр с различными моделями представления при изменении SelectedItem. Это означает, что состояние, например, развернуты или нет узлы дерева, не отслеживается отдельно для выбранного элемента.
Есть ли лучший способ сделать это?
Спасибо за вашу помощь,
Ричард