У меня есть объект Menu
(установленный как DataContext), который содержит много Options (Menu.Options)
, которое содержит Name (Option.Name)
и много Options (Option.Options)
.Все коллекции имеют тип ObservableCollection<T>
.
Меню загружается из файла XML, поэтому количество опций и значений может варьироваться.
Для наглядности приведен соответствующий XAML:
<ListBox ItemsSource="{Binding Path=Options}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<!-- Title -->
<TextBlock Text="{Binding Path=Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" />
<!-- Selection -->
<toolkit:ListPicker ItemsSource="{Binding Path=Options}" SelectionChanged="ListPicker_SelectionChanged">
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
<toolkit:ListPicker.FullModeItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</toolkit:ListPicker.FullModeItemTemplate>
</toolkit:ListPicker>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
У меня есть метод ListPicker_SelectionChanged
для события SelectionChanged, в котором я хочу каким-либо образом отметить текущее выделение в модели с привязкой к данным.Мне нужно сделать это, используя только параметры, предоставленные методу, так как каждый ListPicker генерируется во время выполнения.Поэтому я не могу указывать фактические имена элементов управления (насколько я знаю в любом случае).
Я вижу два возможных варианта:
1) Чтобы иметь CurrentSelection
внутри Menu.Option
, где я могу поместить ссылку на последний выбранный элемент дляэтот ListPicker
2) Для атрибута Selected
в Option.Option
.Недостатком здесь является то, что все элементы отменяются, когда выбирается новый.
Я пытался просмотреть дерево объектов sender
, но все, что я нахожу, например ItemsHost
, недоступно (личное / защищенное).
Могу ли я как-нибудьдостичь решения?