public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            if (item == null) return null;
            if(item is MyItemWrapper)
            {
                MyItemWrapper miw = item as MyItemWrapper;
                if(miw.Value is bool)
                {
                    return BoolTemplate;
                }
                else if (miw.Value is Enum)
                {
                    return EnumTemplate;
                }
                else if (miw.Value is string)
                {
                    return StringTemplate;
                }
                else if(miw.Value is double)
                {
                    return DoubleTemplate;
                }
                else if (miw.Value is int)
                {
                    return IntTemplate;
                }

                return StringTemplate;
            }

            return null;
        }
Example #2
0
        public static MyItemWrapper Create(MyItem myItem)
        {
            Type valueType = myItem.Value.GetType();

            if (valueType.IsEnum)
            {
                MyItemWrapper m = new MyItemWrapper(myItem);
                m.Items = Enum.GetValues(valueType);
                return(m);
            }
            else
            {
                return(new MyItemWrapper(myItem));
            }
        }
        public MainWindowsViewModel(IEnumerable <MyItem> myItems)
        {
            MyItems = new ObservableCollection <MyItemWrapper>();

            foreach (MyItem i in myItems)
            {
                MyItemWrapper iw = MyItemWrapperFactory.Create(i);

                iw.PropertyChanged += (s, e) =>
                {
                    if (e.PropertyName == nameof(MyItemWrapper.Value))
                    {
                        //se ho cambiato il valore, notifico la modifica di Modified
                        RaisePropertyChanged(nameof(Modified));
                        RaisePropertyChanged(nameof(Title));
                        SaveCommand.RaiseCanExecuteChanged();
                        AcceptChangesCommand.RaiseCanExecuteChanged();
                        RejectChangesCommand.RaiseCanExecuteChanged();
                    }
                    else if (e.PropertyName == nameof(MyItemWrapper.IsValueChanged))
                    {
                        RaisePropertyChanged(nameof(Modified));
                        RaisePropertyChanged(nameof(Title));
                        SaveCommand.RaiseCanExecuteChanged();
                        AcceptChangesCommand.RaiseCanExecuteChanged();
                        RejectChangesCommand.RaiseCanExecuteChanged();
                    }
                };

                MyItems.Add(iw);
            }

            //MyItems.Add(MyItemWrapperFactory.Create(MyItemWrapper.Element_Cognome, MyItemWrapper.Cat_2, 10));



            //MyItems.Add(MyItemWrapperFactory.Create(MyItemWrapper.Element_Cognome, MyItemWrapper.Cat_2, 10));
            //MyItems.Add(MyItemWrapperFactory.Create(MyItemWrapper.Element_Nome, MyItemWrapper.Cat_1, "Andrea"));
            //MyItems.Add(MyItemWrapperFactory.CreateForEnum(MyItemWrapper.Element_Palla, MyItemWrapper.Cat_3, (int)ETipoPalla.Rugby, typeof(ETipoPalla)));
            //MyItems.Add(MyItemWrapperFactory.CreateForEnum(MyItemWrapper.Element_Tavolo, MyItemWrapper.Cat_2, (int)ETipoTavolo.Pentagonale, typeof(ETipoTavolo)));


            //MyItems.Add(new MyItemWrapper(new MyItem() { Code = MyItemWrapper.Element_Cognome, Category = MyItemWrapper.Cat_2, Value = 10 }));
            //MyItems.Add(new MyItemWrapper(new MyItem() { Code = MyItemWrapper.Element_Nome, Category = MyItemWrapper.Cat_1, Value = "Andrea" }));
            //MyItems.Add(enumItem1);
            //MyItems.Add(new MyItemWrapper(new MyItem() { Code = MyItemWrapper.Element_Telefono, Category = MyItemWrapper.Cat_3, Value = true }));
            //MyItems.Add(new MyItemWrapper(new MyItem() { Code = MyItemWrapper.Element_Vetro, Category = MyItemWrapper.Cat_4, Value = "Bicchiere" }));
            //MyItems.Add(new MyItemWrapper(new MyItem() { Code = MyItemWrapper.Element_Ciao, Category = MyItemWrapper.Cat_3, Value = 12.5d  }));
            //MyItems.Add(new MyItemWrapper(new MyItem() { Code = MyItemWrapper.Element_Perche, Category = MyItemWrapper.Cat_2, Value = 17.4d }));
            //MyItems.Add(enumItem2);
            //MyItems.Add(new MyItemWrapper(new MyItem() { Code = MyItemWrapper.Element_Porta, Category = MyItemWrapper.Cat_2, Value = "A soffietto" }));
            //MyItems.Add(new MyItemWrapper(new MyItem() { Code = MyItemWrapper.Element_Benzina, Category = MyItemWrapper.Cat_2, Value = "Diesel 75 ottani"}));

            //COMANDI
            SaveCommand          = new RelayCommand(Save, CanSave);
            AcceptChangesCommand = new RelayCommand(AcceptChanges, CanAcceptChanges);
            RejectChangesCommand = new RelayCommand(RejectChanges, CanRejectChanges);

            // Collection which will take your ObservableCollection
            var _itemSourceList = new CollectionViewSource()
            {
                Source = MyItems
            };
            GroupDescription gd = new PropertyGroupDescription("CategoryDescription");

            _itemSourceList.GroupDescriptions.Add(gd);

            // ICollectionView the View/UI part
            MyCollectionView = _itemSourceList.View;

            // your Filter
            var yourCostumFilter = new Predicate <object>(ComplexFilter);

            //now we add our Filter
            MyCollectionView.Filter = yourCostumFilter;

            ChangeLanguageCommand = new RelayCommand <string>(ChangeLanguage);

            SetLanguage("it-IT");
        }