最近在學習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 }; }
在前臺綁定也是不同的
<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>
但是為什么綁定Command的時候是找得到同一個Command呢?
還有一個問題listview的FooterTemplate怎么去選中呢
4.UserControl通過 x:FieldModifier來控制訪問權限
5.splitview的DisplayMode決定了它的不同顯示
最近遇到了很多問題,寫的很差,新手勿噴
demo下載地址
新聞熱點
疑難解答