是否可以从数据模板绑定到控件的属性?
好吧,听起来很奇怪,而且可能有更好的方法,但我还没有看到。
我想做的是在 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}>
我只是不确定如何获取模板化控件(在本例中为列表选择器)的属性。
有什么想法吗?
Ok, sounds odd, and there's likely a better way, but I haven't seen it yet.
What I'm trying to do is restyle a ListPicker under Windows Phone 7.
What I need is to
- get rid of the header (that's easy, just define a null ListPicker.HeaderTemplate).
- Force the picker to always go to full mode when clicked (again, easy, just set the ItemCountThreshold to 1).
- Restyle the itemtemplate used when in FullMode (again, easy, just define a FullModeItemTemplate)
- Incorporate the ListPicker's "HEADER" property value into the ItemTemplate (since only one item will ever show, i need the header text "embedded" within the one item).
It's that number 4 that I can't seem to get.
I've defined a listpicker like so (i'm directly defining the templates inline instead of in resources for now, just to keep things simple).
<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>
Ignoring all the obvious formatting bits for now, the problem I'm having is that I can't use {TemplateBinding Header} from within a datatemplate. I've used it from a ControlTemplate no problem.
The result of this ItemTemplate should be an item displayed such as
{TextOfHeader}{Content of selected Item}>
I'm just not sure how to go about getting at a property of the templated control (the listpicker in this case).
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
利用 RelativeSource:
Take advantages of RelativeSource: