最近在学习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的那一项publicSpliteViewViewModel()
{
spHelper=newList<SpliteViewHelper>()
{newSpliteViewHelper() {SpliteviewName="标题1",groupType=1,SpIcon=newBitmapImage(newUri("ms-appx:///Assets/LockScreenLogo.scale-200.png")) ,TemplateType=1},newSpliteViewHelper() {SpliteviewName="标题2",groupType=1,SpIcon=newBitmapImage(newUri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},newSpliteViewHelper() {SpliteviewName="标题3",groupType=1,SpIcon=newBitmapImage(newUri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},newSpliteViewHelper() {SpliteviewName="标题1",groupType=1,SpIcon=newBitmapImage(newUri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=2},newSpliteViewHelper() {SpliteviewName="标题4",groupType=1,SpIcon=newBitmapImage(newUri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},newSpliteViewHelper() {SpliteviewName="标题5",groupType=1,SpIcon=newBitmapImage(newUri("ms-appx:///Assets/LockScreenLogo.scale-200.png")),TemplateType=1},
};
SpView=newSpliteViewHelper() { SpliteviewName ="底部标题", groupType =1, SpIcon =newBitmapImage(newUri("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下载地址