多くのOptions (Menu.Options)
が含まれているMenu
オブジェクト(DataContextとして設定されています)には、と多くのOptions (Option.Options)
が含まれています。コレクションはすべてタイプObservableCollection<T>
です。WP7 ListPicker - DataSourceから生成されたモデルで選択された項目にマークを付ける方法は?
メニューはXMLファイルから読み込まれるため、オプションと値の量はさまざまです。私は何とかデータバインドされたモデルの現在の選択をマークしたいSelectionChangedイベント、上の方法ListPicker_SelectionChanged
を持って
<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>
:
する視覚化を支援するために、ここでは関係XAMLです。私は、各ListPickerが実行時に生成されるので、メソッドに供給されたパラメータだけを使用してそれを行う必要があります。だから私は実際のコントロール名を指定することはできません(私が知っている限り)。
私は2つの可能なオプションを参照することができます:Selected
を持っているために)私はそのListPicker
2のために最後に選択した項目への参照を置くことができますMenu.Option
内部CurrentSelection
を、持っているために
1) Option.Option
の属性ここでは、新しい要素が選択されたときにすべての要素が選択解除されていることを確認しています。
私はオブジェクトツリーsender
をブラウズしようとしましたが、見つけたものはItemsHost
のようにアクセスできません(プライベート/保護されています)。
解決策はありますか?
優秀なの背後に、私が必要とまさに、ありがとうございました!もう一つ(関連する) - SelectedItemバインディングを適用すると、デザイナーは "SelectedItemは常に有効な値に設定する必要があります"というエラーを投げています。これは、デザインd:DataContext(これは名前が重複しているのが好きではないと思われます。http://imagebin.org/199982)このエラーを修正/抑制する方法について助言していますか?完全なエラーメッセージ:http://pastebin.com/XQM0zWJZ – Josh
これらの2つのオプションは別個のインスタンスです。 SelectedIndexを使用してデフォルトを設定する必要があります。それ以外の場合は、IComparableを実装するか、GetHashCode()をオーバーライドしてみてください。 –
うーん、両者を試してみましたが、動かすことができませんでした。実際の実行時の問題はうまくいきますが、サンプルの設計データだけは気にしないでください。ありがとう! – Josh