无法在列表框中选择一个项目

时间:2020-09-19 14:08:18

标签: c# wpf

我的目标是要有一个根据数据更改其模板的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;
                }

             
        }
    }

0 个答案:

没有答案
相关问题