1

好吧,听起来很奇怪,而且可能有更好的方法,但我还没有看到。

我要做的是在 Windows Phone 7 下重新设置 ListPicker 的样式。

我需要的是

  1. 摆脱标题(这很容易,只需定义一个空的 ListPicker.HeaderTemplate)。
  2. 强制选择器在单击时始终进入完整模式(同样,简单,只需将 ItemCountThreshold 设置为 1)。
  3. 重新设置在 FullMode 中使用的 itemtemplate 的样式(同样,简单,只需定义一个 FullModeItemTemplate)
  4. 将 ListPicker 的“HEADER”属性值合并到 ItemTemplate 中(因为只会显示一项,我需要将标题文本“嵌入”在一项中)。

这是我似乎无法得到的数字 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}>

我只是不确定如何获取模板化控件的属性(在本例中为 listpicker)。

有任何想法吗?

4

1 回答 1

0

利用RelativeSource

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