
·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> 学习总结
最近在学习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下载地址