【问题标题】:UWP TreeView crashUWP 树视图崩溃
【发布时间】: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 它与实际的文件夹结构不匹配。

标签: c# xaml uwp treeview win-universal-app


【解决方案1】:

默认ItemsSource为集合类型,但上述代码中Tree数据源为FolderTree,会导致参数错误,请根据实际数据结构修改为集合。

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 2020-11-05
    • 1970-01-01
    • 2020-01-20
    • 2017-07-04
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2021-02-28
    相关资源
    最近更新 更多