1

わかりました、奇妙に聞こえます。おそらくもっと良い方法がありますが、まだ見ていません。

私がやろうとしているのは、Windows Phone 7 で ListPicker のスタイルを変更することです。

私が必要なのは

  1. ヘッダーを削除します (これは簡単です。null の ListPicker.HeaderTemplate を定義するだけです)。
  2. ピッカーがクリックされたときに常にフル モードになるように強制します (これも簡単ですが、ItemCountThreshold を 1 に設定するだけです)。
  3. FullMode で使用される itemtemplate のスタイルを変更します (これも簡単です。FullModeItemTemplate を定義するだけです)。
  4. 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}>

テンプレート化されたコントロール (この場合はリストピッカー) のプロパティを取得する方法がわかりません。

何か案は?

4

1 に答える 1

0

RelativeSourceを利用します。

<TextBlock Text="{Binding Path=Header, RelativeSource={RelativeSource AncestorType={x:Type phonekit:ListPicker}}}" />
于 2011-08-10T04:29:28.773 に答える