WP8为LongListSelector添加类似ListBox的点击凹陷效果
2013-02-26 15:03
309 查看
我们知道WP8上的开发推荐使用LongListSelector代替ListBox,它的效率要比ListBox高。
但是LongListSelector并没有ListBox的点击凹陷效果,而且VisualStateGroups里也没有对应的VisualState提供给我们直接修改,
所以要想实现该点击凹陷效果只能想其它办法了。
以下是个人研究的一种方法:
1.新建一个UserControl,在xaml里删除它的所有子控件:
3.在LongListSelector的ItemTemplate中使用该LongListItemContainer作为原来Template的父控件:
好了,运行一下吧,点击凹陷效果有啦~~~
但是LongListSelector并没有ListBox的点击凹陷效果,而且VisualStateGroups里也没有对应的VisualState提供给我们直接修改,
所以要想实现该点击凹陷效果只能想其它办法了。
以下是个人研究的一种方法:
1.新建一个UserControl,在xaml里删除它的所有子控件:
<UserControl x:Class="FYDZHWP8.LongListItemContainer" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Foreground="Transparent" Background="Transparent" d:DesignHeight="480" d:DesignWidth="480"> </UserControl>2. 这个LongListItemContainer对应的cs代码内容如下:
public partial class LongListItemContainer : UserControl { public LongListItemContainer() { InitializeComponent(); this.MouseLeftButtonDown += OnPointerDown; this.MouseLeftButtonUp += OnPointerUp; this.MouseLeave += OnPointerUp; } private void OnPointerDown(object sender, System.Windows.Input.MouseEventArgs e) { if ((sender as UIElement) != null) (sender as UIElement).Projection = new PlaneProjection() { LocalOffsetZ = -30 }; } private void OnPointerUp(object sender, System.Windows.Input.MouseEventArgs e) { if ((sender as UIElement) != null) (sender as UIElement).Projection = null; } }即,处理点击事件进行Z变换,以实现对Item的缩小显示(凹陷效果)。
3.在LongListSelector的ItemTemplate中使用该LongListItemContainer作为原来Template的父控件:
<phone:LongListSelector.ItemTemplate> <DataTemplate> <local:LongListItemContainer> <Grid Margin="0,0,0,10"> <TextBlock TextWrapping="NoWrap" Margin="0,0,0,0" TextAlignment="Left" TextTrimming="WordEllipsis" VerticalAlignment="Top" Foreground="White" FontSize="30" Text="{Binding Title}"/> <TextBlock TextWrapping="Wrap" Height="80" Margin="0,40,0,0" TextAlignment="Left" TextTrimming="WordEllipsis" VerticalAlignment="Top" Foreground="DarkGray" FontSize="20" Text="{Binding Content}" /> </Grid> </local:LongListItemContainer> </DataTemplate> </phone:LongListSelector.ItemTemplate>
好了,运行一下吧,点击凹陷效果有啦~~~
相关文章推荐
- 笔记,GridView点击添加背景,类似checkbox效果的实现
- textview添加selector实现button的点击效果
- ImageView用作按钮是添加点击效果Selector
- iOS 在tableView上添加button导致按钮没有点击效果和不能滑动的 zhuang
- UIWebView中添加点击手势UITapGestureRecognizer没有效果的原因
- AChartEngine (一) 事件处理 添加坐标/标签 点击效果
- Android按钮点击效果的实现(selector)
- 添加表(类似GridView的效果)
- swift按钮通过代码添加点击事件时出现unrecognized selector sent to instance 0x136ea5010错误
- 实现购物车点击添加的抛物线动画效果
- android Recyclerview实现类似朋友圈点击添加图片的view
- android动态添加删除布局,并且带有动画效果,点击可以展开布局
- jQuerydiv点击添加或者移除样式实现导航切换效果
- Android点击按钮切换背景效果-selector使用方法
- Fly to basket 点击添加到右侧购物车,动画效果
- 为鼠标点击事件添加全局效果处理
- 关于Linealayout 各item点击效果,比较不错的selector
- listView添加点击效果
- android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现
- android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现