わかりました、奇妙に聞こえます。おそらくもっと良い方法がありますが、まだ見ていません。
私がやろうとしているのは、Windows Phone 7 で ListPicker のスタイルを変更することです。
私が必要なのは
- ヘッダーを削除します (これは簡単です。null の ListPicker.HeaderTemplate を定義するだけです)。
- ピッカーがクリックされたときに常にフル モードになるように強制します (これも簡単ですが、ItemCountThreshold を 1 に設定するだけです)。
- FullMode で使用される itemtemplate のスタイルを変更します (これも簡単です。FullModeItemTemplate を定義するだけです)。
- ListPicker の「HEADER」プロパティ値を ItemTemplate に組み込みます (表示されるアイテムは 1 つだけなので、1 つのアイテム内にヘッダー テキストを「埋め込む」必要があります)。
なかなか手に入らない4番です。
私はリストピッカーをそのように定義しました(単純にするために、今のところリソースではなくインラインでテンプレートを直接定義しています)。
<phonekit:ListPicker Header="Header Text" x:Name="ListOfSounds"
SelectedItem="{Binding Path=DepartureChime, Mode=TwoWay, Converter={StaticResource EnumDescriptionToStringConverter}}"
ItemCountThreshold="1">
<phonekit:ListPicker.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Background="Transparent">
<TextBlock Text="{TemplateBinding Header}" />
<TextBlock Text="{Binding}" />
<TextBlock Text=">" />
</StackPanel>
</DataTemplate>
</phonekit:ListPicker.ItemTemplate>
今のところ明らかな書式設定ビットをすべて無視すると、私が抱えている問題は、データテンプレート内から {TemplateBinding Header} を使用できないことです。ControlTemplate から問題なく使用しました。
この ItemTemplate の結果は、次のように表示されるアイテムになります。
{TextOfHeader}{Content of selected Item}>
テンプレート化されたコントロール (この場合はリストピッカー) のプロパティを取得する方法がわかりません。
何か案は?