UWP 树视图崩溃
Posted
技术标签:
【中文标题】UWP 树视图崩溃【英文标题】:UWP TreeView crash 【发布时间】:2020-01-22 06:51:19 【问题描述】:我有一个TreeView
(我几乎从 XAML 控件库中复制了相同的代码):
<TreeView
x:Name="LocalFolderTreeView"
ItemTemplateSelector="StaticResource FolderTreeTemplateSelector"
ItemsSource="x:Bind Tree, Mode=OneWay"
Visibility="Collapsed" />
还有ItemTemplateSelector
的XAML:
<DataTemplate x:Key="FolderTemplate" x:DataType="data:FolderTree">
<TreeViewItem
DoubleTapped="FolderTreeItem_DoubleTapped"
IsDoubleTapEnabled="True"
IsExpanded="False"
ItemsSource="x:Bind Files">
<StackPanel Orientation="Horizontal">
<StackPanel.ContextFlyout>
<MenuFlyout Opening="OpenPlaylistFlyout" />
</StackPanel.ContextFlyout>
<SymbolIcon Symbol="Folder" />
<TextBlock Margin="0,0,10,0" />
<TextBlock Text="x:Bind Path" />
</StackPanel>
</TreeViewItem>
</DataTemplate>
<DataTemplate x:Key="FileTemplate" x:DataType="data:Music">
<TreeViewItem>
<StackPanel
DoubleTapped="FileItem_DoubleTapped"
IsDoubleTapEnabled="True"
Orientation="Horizontal">
<StackPanel.ContextFlyout>
<MenuFlyout Opening="OpenMusicFlyout" />
</StackPanel.ContextFlyout>
<Image Width="20" Source="Assets/colorful_no_bg.png" />
<TextBlock Margin="0,0,10,0" />
<TextBlock Text="x:Bind Name" />
</StackPanel>
</TreeViewItem>
</DataTemplate>
<templateselector:FolderTreeTemplateSelector
x:Key="FolderTreeTemplateSelector"
FileTemplate="StaticResource FileTemplate"
FolderTemplate="StaticResource FolderTemplate" />
ItemTemplateSelector
的 C# 是
public class FolderTreeTemplateSelector : DataTemplateSelector
public DataTemplate FolderTemplate get; set;
public DataTemplate FileTemplate get; set;
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
if (item is Models.FolderTree) return FolderTemplate;
if (item is Models.Music) return FileTemplate;
return null;
使用here
我的 ViewModel 定义为 here。
当我将此添加到 TreeView
时,我的应用程序崩溃了。 Tree
不为空,因为我还定义了 GridView
让我看到它。
ItemsSource="x:Bind Tree, Mode=OneWay"
怎么了?
【问题讨论】:
我检查了LocalFoldersPage
,我找不到你为TreeView设置了itemsource。所以,我不确定数据结构是否与您的 xaml 匹配。
@NicoZhu-MSFT 我删除了它,因为它导致我的应用程序崩溃。您可以将其添加回来。
如何浏览 LocalFoldersPage ?
@NicoZhu-MSFT 您需要一个包含音乐文件文件夹的文件夹。如果您有像folder1/folder2/music.mp3
这样的音乐文件,基本上将folder1
设置为您的根路径。
我检查了 FolderTree 它与实际的文件夹结构不匹配。
【参考方案1】:
默认ItemsSource
为集合类型,但上述代码中Tree数据源为FolderTree
,会导致参数错误,请根据实际数据结构修改为集合。
【讨论】:
以上是关于UWP 树视图崩溃的主要内容,如果未能解决你的问题,请参考以下文章