• 学习总结


    最近在学习win10开发UWP应用的时候遇到了一些问提,记录以作备用。

    1. listview可以通过ItemTemplateSelector来给listview显示不同的DataTemplate

    一个继承DataTemplateSelector的类,通过重写SelectTemplateCore的方法来指定不同的DataTemplate

    2.在DataTemplate里面使用x:bind的时候,必须在DataTemplate那里指定x:DataType,不然编译会报错

    3.listview的FooterTemplate和DataTemplate的内容所属的集合不一致,

    在赋值的时候,是这样赋值的

            //初始化数据,TemplateType=2的那一项是占位项,用来显示画线的那一项
            //SpView的那一项是listview的footitem的那一项
            public SpliteViewViewModel()
            {
                spHelper = new List<SpliteViewHelper>()
                {
                   new SpliteViewHelper() {SpliteviewName="标题1",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")) ,TemplateType=1},
                   new SpliteViewHelper() {SpliteviewName="标题2",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},
                   new SpliteViewHelper() {SpliteviewName="标题3",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},
                    new SpliteViewHelper() {SpliteviewName="标题1",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=2},
                   new SpliteViewHelper() {SpliteviewName="标题4",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},
                   new SpliteViewHelper() {SpliteviewName="标题5",groupType=1,SpIcon=new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},
                };
                SpView = new SpliteViewHelper() { SpliteviewName = "底部标题", groupType = 1, SpIcon = new BitmapImage(new Uri("ms-appx:///Assets/LockScreenLogo.scale-200.png")), TemplateType = 1 };
            }
    View Code

    在前台绑定也是不同的

    <ListView x:Name="SplitViewListView" SelectedItem="{Binding spviewmodel.selectitem}" ItemsSource="{Binding spviewmodel.spHelper}" Background="#372127" >
                        <Interactivity:Interaction.Behaviors>
                            <core:EventTriggerBehavior EventName="SelectionChanged">
                                <core:InvokeCommandAction Command="{Binding spviewmodel.SelectedCommand}" CommandParameter="{Binding ElementName=SplitViewListView,Path=SelectedItem}"/>
                            </core:EventTriggerBehavior>
                        </Interactivity:Interaction.Behaviors>
                        <ListView.ItemTemplateSelector>
                            <com:TemplateSelector  LineTemplate="{StaticResource LineTemplate}" NomalTemplate="{StaticResource NomalTemplate}"/>
                        </ListView.ItemTemplateSelector>
                        <ListView.FooterTemplate>
                            <DataTemplate >
                                <StackPanel  Orientation="Horizontal" Height="40" x:Name="footItem">
                                    <Interactivity:Interaction.Behaviors>
                                        <core:EventTriggerBehavior EventName="Tapped">
                                            <core:InvokeCommandAction Command="{Binding spviewmodel.SelectedCommand}" CommandParameter="{Binding ElementName=footItem}"/>
                                        </core:EventTriggerBehavior>
                                    </Interactivity:Interaction.Behaviors>
                                    <Image Source="{Binding spviewmodel.SpView.SpIcon}" Width="40" Height="40" VerticalAlignment="Center"/>
                                    <TextBlock Text="{Binding spviewmodel.SpView.SpliteviewName}" Foreground="White"></TextBlock>
                                </StackPanel>
                            </DataTemplate>
                        </ListView.FooterTemplate>
                    </ListView>
    View Code

    但是为什么绑定Command的时候是找得到同一个Command呢?

    还有一个问题listview的FooterTemplate怎么去选中呢

    4.UserControl通过 x:FieldModifier来控制访问权限

    5.splitview的DisplayMode决定了它的不同显示

    最近遇到了很多问题,写的很差,新手勿喷

    demo下载地址

  • 相关阅读:
    C#中 栈,堆你真的懂吗?不理解引用类型和值类型区别的程序员将会给代码引入诡异的bug和性能问题
    c# 可空类型,语法糖,lambda,命名规则(Pascal 帕斯卡命名,Camel 驼峰命名),注释,封装,继承,多态
    数据库事务,游标,触发器,存储过程,索引,数字,日期转换为字符,字符串操作,查询,分类,内连接,外连接,全连接,模糊查询,范围查询,5种聚合函数,分组查询,主键,外键,标识列
    html,css 知识汇总
    html,css,js,jquery
    数据库文件托管
    final,finally,finalize的区别
    Thread,Threadpool,task的区别
    ABP 一个开源的web开发框架
    redis 40问
  • 原文地址:https://www.cnblogs.com/lj940306/p/4977788.html
Copyright © 2020-2023  润新知