aと manyをMenu
含む many を含むオブジェクト (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>
SelectionChanged イベントのメソッドListPicker_SelectionChanged
があり、データバインドされたモデルで現在の選択を何らかの方法でマークしたいと考えています。各 ListPicker は実行時に生成されるため、メソッドに指定されたパラメーターのみを使用してそれを行う必要があります。したがって、実際のコントロール名を指定することはできません (とにかく知っている限り)。
次の 2 つのオプションが考えられます。
1)その ListPicker で最後に選択された項目への参照を配置できるCurrentSelection
内部を持つにはMenu.Option
2) にSelected
属性を持たせるOption.Option
。ただし、ここでの欠点は、新しい要素が選択されたときにすべての要素が選択解除されていることを確認することです。
のオブジェクト ツリーをブラウズしようとしましたsender
が、 など、見つかったものにItemsHost
はアクセスできません (非公開/保護)。
解決策を達成する方法はありますか?