好吧,听起来很奇怪,而且可能有更好的方法,但我还没有看到。
我要做的是在 Windows Phone 7 下重新设置 ListPicker 的样式。
我需要的是
- 摆脱标题(这很容易,只需定义一个空的 ListPicker.HeaderTemplate)。
- 强制选择器在单击时始终进入完整模式(同样,简单,只需将 ItemCountThreshold 设置为 1)。
- 重新设置在 FullMode 中使用的 itemtemplate 的样式(同样,简单,只需定义一个 FullModeItemTemplate)
- 将 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)。
有任何想法吗?