Сбой TreeView UWP - PullRequest
       41

Сбой TreeView UWP

0 голосов
/ 21 сентября 2019

У меня есть TreeView (я почти скопировал тот же код из XAML Controls Gallary):

    <TreeView
        x:Name="LocalFolderTreeView"
        ItemTemplateSelector="{StaticResource FolderTreeTemplateSelector}"
        ItemsSource="{x:Bind Tree, Mode=OneWay}"
        Visibility="Collapsed" />

И XAML ItemTemplateSelector:

    <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}" />

C # изItemTemplateSelector is

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;
    }
}

Используется здесь

Мои ViewModels определены здесь .

Когда я добавляюэто к TreeView, мое приложение вылетает.Tree не является нулевым, потому что я также определил GridView, который позволяет мне видеть его.

        ItemsSource="{x:Bind Tree, Mode=OneWay}"

Что не так?

1 Ответ

1 голос
/ 24 сентября 2019

По умолчанию ItemsSource - это тип коллекции ,, но в приведенном выше коде источник данных Tree равен FolderTree, это приведет к ошибке аргумента, пожалуйста, измените его как базу сбора на вашей фактической структуре данных.

...