Xaml 未执行UWP TreeView ItemTemplateSelector
我正在使用的TreeView不会执行Xaml 未执行UWP TreeView ItemTemplateSelector,xaml,uwp,treeview,Xaml,Uwp,Treeview,我正在使用的TreeView不会执行ItemTemplateSelector,不管我在XAML和代码隐藏中声明了它 以下是我在XAML中的页面资源: <DataTemplate x:Key="FolderTemplate" x:DataType="localdata:FolderInfo"> <TreeViewItem ItemsSource="{x:Bind subFolders}"> <StackPanel Orienta
ItemTemplateSelector
,不管我在XAML和代码隐藏中声明了它
以下是我在XAML中的页面资源:
<DataTemplate x:Key="FolderTemplate" x:DataType="localdata:FolderInfo">
<TreeViewItem ItemsSource="{x:Bind subFolders}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="#Folder#" />
<Image Width="20" Source="Assets/img2.png"/>
<TextBlock Text="{x:Bind FolderName }" />
</StackPanel>
</TreeViewItem>
</DataTemplate>
<DataTemplate x:Key="FileTemplate" x:DataType="localdata:FolderInfo">
<TreeViewItem>
<StackPanel Orientation="Horizontal">
<Image Width="20" Source="Assets/img3.png"/>
<TextBlock Text="{x:Bind FolderName}"/>
</StackPanel>
</TreeViewItem>
</DataTemplate>
<localdata:ExplorerItemTemplateSelector
x:Key="ExplorerItemTemplateSelector"
FolderTemplate="{StaticResource FolderTemplate}"
FileTemplate="{StaticResource FileTemplate}" />
在我的代码隐藏文件中:
public class ExplorerItemTemplateSelector : DataTemplateSelector
{
public DataTemplate FolderTemplate { get; set; }
public DataTemplate FileTemplate { get; set; }
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
var explorerItem = (FolderInfo)item;
if (explorerItem.IsFolder == true) return FolderTemplate;
return FileTemplate;
}
}
绑定工作正常。为了消除混乱,我在这篇评论中省略了VM。有趣的是,如果我从TreeView的声明中删除
ItemTemplateSelector=“{StaticResource ExporItemTemplateSelector}”
,它在视觉或功能上没有任何变化。DataTemplateSelector类型实际上有两个不同的SelectTemplateCore
方法重载,TreeView
使用第二个,只有一个对象
参数:
public class ExplorerItemTemplateSelector : DataTemplateSelector
{
public DataTemplate FolderTemplate { get; set; }
public DataTemplate FileTemplate { get; set; }
protected override DataTemplate SelectTemplateCore(object item)
{
var explorerItem = (FolderInfo)item;
if (explorerItem.IsFolder == true) return FolderTemplate;
return FileTemplate;
}
}
在此表单中,应按预期调用该方法。数据模板选择器类型实际上有两个不同的
SelectTemplateCore
方法重载,TreeView
使用第二个方法,只有一个对象
参数:
public class ExplorerItemTemplateSelector : DataTemplateSelector
{
public DataTemplate FolderTemplate { get; set; }
public DataTemplate FileTemplate { get; set; }
protected override DataTemplate SelectTemplateCore(object item)
{
var explorerItem = (FolderInfo)item;
if (explorerItem.IsFolder == true) return FolderTemplate;
return FileTemplate;
}
}
在此表单中,应按预期调用该方法。感谢您的回复。我赞成你的答案。在使用选择器时发现我需要删除ItemTemplate。感谢回复。我赞成你的答案。发现在使用选择器时需要删除ItemTemplate。