设为首页 收藏本站
查看: 2934|回复: 0

一、《Win8 Store 应用实例》 之 FlipView

[复制链接]

尚未签到

发表于 2015-5-20 12:14:57 | 显示全部楼层 |阅读模式
  听说Windows 8平板电脑,在苏宁已经接受预定了,那么优秀的你还不抓紧时间填补windows 8应用商店的空白吗?
目前许多已经上线的windows 8 购物客户端,基本都运用了FlipView+索引条做成下面的效果,因此我也想做一个这样的例子,方便以后使用。
  我想在FlipView加上最下面的一行索引条小按钮,效果如图:
DSC0000.jpg
  
  在网上找的例子都是使用css样式实现的,所以就想自己用C#+Xaml实现该效果。FlipView图片和下面的索引条小按钮进行绑定效果,当点击灰色 DSC0001.jpg 图片之后它变成黑色图片 DSC0002.jpg ,索引条其余小按钮变成灰色小圆图片,同时FilpView的当前显示图片也对应显示。当使用FlipView切换图片时,索引条图片也要进行对应修改,以展示当前是第几张图。
DSC0003.jpg
  让我们开始吧:
首先,创建一个数据载体 商品类Store



    class Store
{
///
/// 商品编号
///
public int Id { get; set; }
///
/// 商品图片路径
        ///
public string ImgPath { get; set; }
}
  
  xaml页加入一个FlipView控件:







                                    




  给fvStore绑定数据,让其显示商品图片:



fvStore.ItemsSource = new List {
new Store{ Id = 0, ImgPath = "Resources/StoreInfo/info_0.jpg"},
new Store{ Id = 1, ImgPath = "Resources/StoreInfo/info_1.jpg"},
new Store{ Id = 2, ImgPath = "Resources/StoreInfo/info_2.jpg"},
new Store{ Id = 3, ImgPath = "Resources/StoreInfo/info_3.jpg"},
new Store{ Id = 4, ImgPath = "Resources/StoreInfo/info_4.jpg"},
new Store{ Id = 5, ImgPath = "Resources/StoreInfo/info_5.jpg"}
};
  这样FlipView控件就完成了,但是如何实现索引条?
我尝试了ListView控件做成一个索引条,因为ListView里面的选中项索引可以和FlipView选中项索引进行绑定,很方便。但是由于ListView有它的默认的效果,如鼠标在某一项的图片上时,会有周围灰色的框框,比较大,不好控制,不如没有效果的好看。
因此我想尝试使用StackPanel容器,里面放几张小圆点图片,横排,具体位置,你可以微调下,使它放在FlipView图片上面的底部:
xaml代码:





  后台代码:给sp1添加原点图片子元素,因为载入的商品的展示图片的数量可能是不同的,因此我写一个方法,传入参数 imgCount:



private void spIndex(int imgCount)
{
//默认第一个索引按钮是黑色
      List storeImgs = new List() {
new Store{ Id = 0, ImgPath = "ms-appx:///Resources/StoreInfo/point_Black.jpg"}
};
      //有几张展示图片,就再添加imgCount - 1个灰色小按钮
for (int i = 1; i < imgCount; i++)
{
storeImgs.Add(new Store { Id = i, ImgPath = "ms-appx:///Resources/StoreInfo/point_Gray.jpg" });
}
for (int i = 0; i < storeImgs.Count; i++)
{
Image img = new Image() { Source = new BitmapImage(new Uri(storeImgs.ImgPath)), Width = 16, Height = 16, Margin = new Thickness { Right = 5 } };
img.Tapped += img_Tapped;
sp1.Children.Add(img);
}
}

   void img_Tapped(object sender, TappedRoutedEventArgs e)
{
        //设置索引条图像
       foreach (Image img in sp1.Children)
       {
          img.Source = new BitmapImage(new Uri("ms-appx:///Resources/StoreInfo/point_Gray.jpg"));
       }
       //当前点击的索引项变成黑色圆
       (sender as Image).Source = new BitmapImage(new Uri("ms-appx:///Resources/StoreInfo/point_Black.jpg"));
       //设置FilpView索引
       bool myLock = true; //设置一个锁,每次进行以下循环的时候都使index++,当循环到点击的项时加锁,不再进行index++,因此循环结束后index就是FlipView当前应该显示的图片的索引
       int index = 0;
       for (int i = 0; i < sp1.Children.Count; i++)
       {
         if (sp1.Children != sender && myLock)
         {
             index++;
          }
          else
          {
             myLock = false;
          }
       }
       fvStore.SelectedIndex = index; //设置FlipView显示对应的图片
}

  经过上面对索引条的设置,还需要设置一下FlipView,当使用的FlipView进行图片切换时,索引条也要进行改变,显示当前是几张图:




        ///
/// FlipView选择时修改索引条的外观
///
///
///
private void fvStore_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
int i = 0;
foreach (Image img in sp1.Children)
{
if (i == fvStore.SelectedIndex)
{
img.Source = new BitmapImage(new Uri("ms-appx:///Resources/StoreInfo/point_Black.jpg"));
}
else
{
img.Source = new BitmapImage(new Uri("ms-appx:///Resources/StoreInfo/point_Gray.jpg"));
}
i++;
}
}
  
  至此,一个完整的FlipView例子就搞定了,谢谢您的阅读 ^_^~  。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-68895-1-1.html 上篇帖子: xaml语言建立首个win8 Metro应用,rss阅读器 下篇帖子: 纯css3实现的win8加载动画
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表