我的目标是要有一个根据数据更改其模板的ListBox 现在,我使用ItemTemplateSelector进行了此操作,并且正确选择了模板,但是我的问题是我无法选择一个项目 即使在handlaer,Selection_Changed或在Mouse_Double_Click或任何其他方式中,selectedindex始终为零。 并且selectedItem始终等于我们的第一行
您能提出解决方案,以便我选择吗?
<ListBox x:Name="listBox" ItemsSource="{Binding Objects}" ItemTemplateSelector="{StaticResource studentDataTemplateSelector}" IsSynchronizedWithCurrentItem="True" ItemContainerStyle="{DynamicResource _ListBoxItemStyle}" SelectionChanged="listBox_SelectionChanged" MouseDoubleClick="listBox_MouseDoubleClick">
</ListBox>
<local:StudentDataTemplateSelector x:Key="studentDataTemplateSelector"/>
<DataTemplate x:Key="templateMusic">
<ccontrols:FileUi ContainStr="1Item" TitleStr="{Binding NameFile}" SizeStr="{Binding Size}" CreatedTime="{Binding CreateTime}" ImageUri="Assets/Music.png"/>
</DataTemplate>
<DataTemplate x:Key="templateMovie">
<ccontrols:FileUi ContainStr="1Item" TitleStr="{Binding NameFile}" SizeStr="{Binding Size}" CreatedTime="{Binding CreateTime}" ImageUri="Assets/video.png"/>
</DataTemplate>
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
FrameworkElement element = container as FrameworkElement;
if (item==null)
{
return null;
}
if (item.GetType() == typeof(File))
{
if (Enum.TryParse((((File)item).Extension), true, out ExtensionClass.Music sample))
{
return
element.FindResource("templateMusic")
as DataTemplate;
}
else
{
return
element.FindResource("templateMovie")
as DataTemplate;
}
}
}