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

win8/Metro开发系四 win8 自定义用户控件创

[复制链接]

尚未签到

发表于 2015-5-21 09:44:21 | 显示全部楼层 |阅读模式
  首先还是那句话,我不是大牛,这些只是简单的记录一下学习的过程,没有太多面向对象和设计模式的思维,只偏基础,不喜莫笑;个人观点如果有不足之处,还望多多指教!由于学的不是太深入这里大多数是面向控件和开发介绍;以使快速了解和开发
  因为原来做的是web开发所以,那上面的习惯就嫁接到metro开发上来了,比如原来的模板页,和用户自定义控件
  觉得复用起来挺方面,
  声明可能这种实现的方式很多win8种可能还有更好的实现,只是我还没研究
  所以今天的话题就来了,把我知道的一种实现方式分享给大家
  徒弟:师傅,我想做一个信息发布的metro界面,可是很多重复的界面都长得一个德行,我还得重新绘制么很麻烦,一想起来那么麻烦我就不想写了
  师傅:懒徒弟,程序员不可以这样的,越不想写就越做不出来,往往一动手就会发现有很多简单的方法,比如为师传授你一个妙法-----用户自定义控件
DSC0000.png ok这样创建一个userContol控件复用的板式就可以放在这里面,然后你就可以复用
  徒弟:我看上面还有个模板化控件,那是什么东西
  师傅:百度说如果你用现有控件组合成一个页面用用户控件,如果你重新定义新的控件用模板化控件,不知道本质上有什么很大的区别,你自己问问度娘啊
  徒弟:好我来试试吧
  于是开始做起来了
  徒弟:我建好了,我想绑定信息,想整成win8的德行,用listView咋显示的那么丑,师傅对于此事你怎么看
  师傅:嗯你前面应该数据绑定的应该没有好好看,listView有个默认的Panel就那位,你可以定制自己的Panel用ItemsPanel
  徒弟:哦原来这样,那师傅你对用户控件里面,这个用户控件我基本上整好了,我在多个页面复用它,我怎么能绑定自如呢
  师傅:我给这个用户控件需要绑定变动的元素都给他抽象到用户控件的model里面来对用户控件,进行绑定,然后每个不同的数据源过来都要经过Convert转换成我所需要的类型就Ok了
  徒弟:这样啊,师傅,对用户控件的ListView的事件在使用控件的页面怎么触发这个事件的问题,你怎么看!
  师傅:这个你声明一个公共事件但触发这个事件的时候调用这个时间委托,把参数传递过去,在调用页面注册这个事件就Ok了
  徒弟:哦做好了信息发布,师傅要不要给大家看一看
  师傅:嗯你做的你自己看吧
  userControl.xaml


DSC0001.gif DSC0002.gif View Code

























  userControl.cs



    public sealed partial class NewContol1 : UserControl
{
public ObservableCollection o;
public delegate void dataListViewSelectionChanged(object sender, SelectionChangedEventArgs e);
public event dataListViewSelectionChanged OnSelectionChanged;
public delegate void UserItemClickHandler(object sender, ItemClickEventArgs e);
public event UserItemClickHandler itemClick;
public NewContol1()
{
this.InitializeComponent();
this.dataListView.ItemsSource = this.o;
}
public NewContol1(ObservableCollection o)
{
this.InitializeComponent();
this.o = o;
this.dataListView.ItemsSource = this.o;
// this.dataListView.ItemsSource.
        }
private void OnItemCilck(object sender, ItemClickEventArgs e)
{
itemClick(sender, e);  
}
private void dataListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//  (sender as ListView).ItemTemplate..Items;
            OnSelectionChanged(sender, e);
}
}
ArticleModel.cs

View Code


1   /// 辅助诗歌转换实体类
2     ///
3     ///
4    public class ArticleModel
5     {
6         public string title
7         {
8             get;
9             set;
10         }
11         public string body
12         {
13             get;
14             set;
15         }
16         public string mark1 { get; set; }
17         public string mark2 { get; set; }
18        
19         
20     }
  效果图:
DSC0003.png DSC0004.png DSC0005.png

运维网声明 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-69077-1-1.html 上篇帖子: 手把手玩转win8开发系列课程(25) 下篇帖子: win8.1中安装sql2014 0x800F0906 【 Error while enabling Windows feature : NetFx3, Err
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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