学习总结

2018-06-17 19:30:41来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

最近在学习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下载地址

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:HTML5 中canvas支持触摸屏的签名面板

下一篇:单例模式小例子