zoukankan      html  css  js  c++  java
  • WPF MVVM实现ListBox添加不同的控件

    和之前一样,新建一个WPF工程,Models,Views,ViewModels文件夹,另外添加Selector文件夹。

    第一,Selector文件夹中添加TemplateSelectorDemo类

        public class TemplateSelectorDemo: DataTemplateSelector
        {
            public DataTemplate CalendarDataTemplate { get; set; }
    
            public DataTemplate EllipseDataTemplate { get; set; }
    
            public DataTemplate RectangleDataTemplate { get; set; }
    
            public override DataTemplate SelectTemplate(object item, DependencyObject container)
            {
                if (container is FrameworkElement && item != null)
                {
                    if (item is CalendarViewModel)
                        return CalendarDataTemplate;
    
                    if (item is EllipseViewModel)
                        return EllipseDataTemplate;
    
                    if (item is RectangleViewModel)
                        return RectangleDataTemplate;
    
                    else return null;
                }
                return null;
            }
        }

    ViewModels中添加CalendarViewModel,EllipseViewModel,RectangleViewModel,MenuViewModel类

    分别按顺序图如下

    Views文件夹中添加CalendarView.xaml,EllipseView.xaml,MenuView.xaml,RectangleView.xaml页面

    图片按顺序分别如下

    MenuViewModel类中的内容如下

       public class MenuViewModel:Screen
        {
            public MenuViewModel()
            {
                CurrentViewModel =new CalendarViewModel()
                {
                };
                ViewModelsCollection.Add(CurrentViewModel);
                CurrentViewModel = new EllipseViewModel()
                {
                };
                ViewModelsCollection.Add(CurrentViewModel);
                CurrentViewModel = new RectangleViewModel()
                {
                };
                ViewModelsCollection.Add(CurrentViewModel);
            }
    
            private Screen _CurrentViewModel;
            public Screen CurrentViewModel
            {
                get { return _CurrentViewModel; }
                set { Set(ref _CurrentViewModel, value); }
            }
    
            private Screen _SelectedViewModel;
            public Screen SelectedViewModel
            {
                get { return _SelectedViewModel; }
                set { Set(ref _SelectedViewModel, value); }
            }
    
            private ObservableCollection<Screen> _ViewModelsCollection=new ObservableCollection<Screen>();
            public ObservableCollection<Screen> ViewModelsCollection
            {
                get { return _ViewModelsCollection; }
                set { Set(ref _ViewModelsCollection, value); }
            }
    
        }

    在添加Bootstrapper类,内容如下图

    最后看看运行的效果如下图显示

  • 相关阅读:
    VC 6.0 编译器的使用帮助
    生成可执行jar文件(转)
    DataGridView填充、更新、删除(多行)Sql Express 2005数据库
    访问域服务器修改密码,报“未知的身份验证机制”的错误搞定!
    尝试用Word2007发布博客
    iBatisNet Tutorial
    Asp.net 技巧集合
    TableAdapter 无法插入或更新Access数据库
    OrcasBeta1 installed 玩一玩Silverlight
    Microsoft .NET Compact Framework 开发常见问题解答从msdn上找到。
  • 原文地址:https://www.cnblogs.com/R00R/p/13415657.html
Copyright © 2011-2022 走看看