示例#1
0
        public void SelectedIndex_After_Insertion()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            var selections = new Dictionary <int, object>();

            sharedSource.SelectedItemChanged += (s, e) =>
            {
                // 0 A => 1 B => 2 C
                selections.Add(e.SelectedIndex, e.SelectedItem);
            };

            var item1 = sharedSource.AddNew("A");
            var item2 = sharedSource.AddNew("B");
            var item3 = sharedSource.AddNew("C");

            Assert.AreEqual(3, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(2));
            Assert.AreEqual(2, sharedSource.SelectedIndex);
            Assert.AreEqual(item3, sharedSource.SelectedItem);

            Assert.AreEqual(0, selections.ElementAt(0).Key);
            Assert.AreEqual(item1, selections.ElementAt(0).Value);
            Assert.AreEqual(1, selections.ElementAt(1).Key);
            Assert.AreEqual(item2, selections.ElementAt(1).Value);
            Assert.AreEqual(2, selections.ElementAt(2).Key);
            Assert.AreEqual(item3, selections.ElementAt(2).Value);
            Assert.AreEqual(3, selections.Count);
        }
示例#2
0
        public void ClearFast()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            var item1 = sharedSource.AddNew("A");
            var item2 = sharedSource.AddNew("B");
            var item3 = sharedSource.AddNew("C");

            Assert.AreEqual(3, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(2));
            Assert.AreEqual(2, sharedSource.SelectedIndex);
            Assert.AreEqual(item3, sharedSource.SelectedItem);

            sharedSource.ClearFast();
            Assert.AreEqual(false, item1.IsCanDeactivateInvoked);
            Assert.AreEqual(false, item1.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item2.IsCanDeactivateInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item3.IsCanDeactivateInvoked);
            Assert.AreEqual(false, item3.IsOnNavigatingFromInvoked);
            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);
            Assert.AreEqual(null, sharedSource.SelectedItem);
        }
示例#3
0
        public void Selection_With_SelectionHandling()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            sharedSource.SelectionHandling = SelectionHandling.None;

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            var item1 = sharedSource.AddNew("A");
            var item2 = sharedSource.AddNew("B");

            Assert.AreEqual(2, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(-1, sharedSource.SelectedIndex);
            Assert.AreEqual(null, sharedSource.SelectedItem);

            sharedSource.SelectionHandling = SelectionHandling.Select;
            var item3 = sharedSource.AddNew("C");

            Assert.AreEqual(3, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(2));
            Assert.AreEqual(2, sharedSource.SelectedIndex);
            Assert.AreEqual(item3, sharedSource.SelectedItem);
        }
示例#4
0
        public void FindSelectable_With_Interface()
        {
            var item1 = new MySelectableViewModel {
                Id = 2
            };
            var sources = new List <IMyViewModel>
            {
                new MyViewModelCanDeactivate(),
                new MySelectableViewModel {
                    Id = 1
                },
                new MyViewModelCanActivate(),
                item1,
                new MySelectableViewModel {
                    Id = 3
                }
            };
            var sharedSource = new SharedSource <IMyViewModel>().Load(sources);

            Assert.AreEqual(5, sharedSource.Items.Count);
            Assert.AreEqual(0, sharedSource.SelectedIndex);

            sharedSource.Add(new MySelectableViewModel {
                Id = 2
            }, 2);

            Assert.AreEqual(3, sharedSource.SelectedIndex);
            Assert.AreEqual(item1, sharedSource.SelectedItem);
        }
示例#5
0
        public void InsertNewItem()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            var item1 = sharedSource.InsertNew(0, 5);

            Assert.AreEqual(true, item1.IsCanActivateInvoked);
            Assert.AreEqual(false, item1.IsOnNavigatingFromInvoked);
            Assert.AreEqual(true, item1.IsOnNavigatingToInvoked);
            Assert.AreEqual(5, item1.POnNavigatingTo);
            Assert.AreEqual(true, item1.IsOnNavigatedToInvoked);
            Assert.AreEqual(5, item1.POnNavigatedTo);

            Assert.AreEqual(0, sharedSource.SelectedIndex);
            Assert.AreEqual(item1, sharedSource.SelectedItem);
            Assert.AreEqual(1, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));

            var item2 = sharedSource.InsertNew(0, 10);

            Assert.AreEqual(true, item2.IsCanActivateInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatingFromInvoked);
            Assert.AreEqual(true, item2.IsOnNavigatingToInvoked);
            Assert.AreEqual(10, item2.POnNavigatingTo);
            Assert.AreEqual(true, item2.IsOnNavigatedToInvoked);
            Assert.AreEqual(10, item2.POnNavigatedTo);

            Assert.AreEqual(2, sharedSource.Items.Count);
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(1));
        }
示例#6
0
        public void Call_OneTime_SelectionChanged_On_Insertion()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            int count = 0;

            sharedSource.SelectedItemChanged += (s, e) =>
            {
                count++;
            };

            Assert.AreEqual(0, count);

            var item1 = sharedSource.AddNew("A");

            Assert.AreEqual(1, count);

            var item2 = sharedSource.AddNew("B");

            Assert.AreEqual(2, count);

            var item3 = sharedSource.AddNew("C");

            Assert.AreEqual(3, count);
        }
示例#7
0
        public void Add_Item()
        {
            var s     = new SharedSource <MySharedItem>();
            var item1 = new MySharedItem {
                Id = 1, Name = "A"
            };

            item1.CActivate = false;
            s.Add(item1, 1);
            Assert.AreEqual(true, item1.IsCanActivateInvoked);
            Assert.AreEqual(false, item1.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item1.IsOnNavigatingToInvoked);
            Assert.AreEqual(null, item1.POnNavigatingTo);
            Assert.AreEqual(false, item1.IsOnNavigatedToInvoked);
            Assert.AreEqual(null, item1.POnNavigatedTo);

            item1.CActivate = true;
            s.Add(item1, 1);
            Assert.AreEqual(true, item1.IsCanActivateInvoked);
            Assert.AreEqual(false, item1.IsOnNavigatingFromInvoked);
            Assert.AreEqual(true, item1.IsOnNavigatingToInvoked);
            Assert.AreEqual(1, item1.POnNavigatingTo);
            Assert.AreEqual(true, item1.IsOnNavigatedToInvoked);
            Assert.AreEqual(1, item1.POnNavigatedTo);

            Assert.AreEqual(1, s.Items.Count);
            Assert.AreEqual(item1, s.Items.ElementAt(0));
        }
示例#8
0
        public void Remove()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            var item1 = sharedSource.AddNew("A");
            var item2 = sharedSource.AddNew("B");
            var item3 = sharedSource.AddNew("C");

            Assert.AreEqual(3, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(2));
            Assert.AreEqual(2, sharedSource.SelectedIndex);
            Assert.AreEqual(item3, sharedSource.SelectedItem);

            item1.CDeactivate = false;
            sharedSource.Remove(item1);
            Assert.AreEqual(true, item1.IsCanDeactivateInvoked);
            Assert.AreEqual(false, item1.IsOnNavigatingFromInvoked);

            item1.CDeactivate = true;
            sharedSource.Remove(item1);
            Assert.AreEqual(true, item1.IsCanDeactivateInvoked);
            Assert.AreEqual(true, item1.IsOnNavigatingFromInvoked);

            Assert.AreEqual(2, sharedSource.Items.Count);
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(1, sharedSource.SelectedIndex);
            Assert.AreEqual(item3, sharedSource.SelectedItem);
        }
示例#9
0
        public ShellViewModel(IApplicationCommands applicationCommands)
        {
            this.applicationCommands = applicationCommands;
            SaveAllCommand           = applicationCommands.SaveAllCommand;

            this.TabItemsSource = NavigationManager.GetOrCreateSharedSource <TabViewModel>();
            this.Load();
        }
        public void Navigate_With_Commands_Update_CanExecute()
        {
            var sharedSource = new SharedSource <MySharedItem>();
            var commands     = new SharedSourceCommands(sharedSource);

            Assert.AreEqual(false, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToLastCommand.CanExecute(null));

            var itemA = new MySharedItem();

            sharedSource.Add(itemA);

            Assert.AreEqual(true, itemA.IsOnNavigatedToInvoked);
            Assert.AreEqual(false, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToLastCommand.CanExecute(null));

            var itemB = new MySharedItem();

            sharedSource.Add(itemB);

            Assert.AreEqual(true, itemB.IsOnNavigatedToInvoked);
            Assert.AreEqual(true, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToLastCommand.CanExecute(null));

            commands.MoveToPreviousCommand.Execute(null); // B => A
            Assert.AreEqual(itemA, sharedSource.SelectedItem);
            Assert.AreEqual(false, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToLastCommand.CanExecute(null));

            commands.MoveToNextCommand.Execute(null); // A => B
            Assert.AreEqual(itemB, sharedSource.SelectedItem);
            Assert.AreEqual(true, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToLastCommand.CanExecute(null));

            commands.MoveToFirstCommand.Execute(null);
            Assert.AreEqual(itemA, sharedSource.SelectedItem);
            Assert.AreEqual(false, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToNextCommand.CanExecute(null)); // not clear backstack
            Assert.AreEqual(true, commands.MoveToLastCommand.CanExecute(null));

            commands.MoveToLastCommand.Execute(null);
            Assert.AreEqual(itemB, sharedSource.SelectedItem);
            Assert.AreEqual(true, commands.MoveToFirstCommand.CanExecute(null));
            Assert.AreEqual(true, commands.MoveToPreviousCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToNextCommand.CanExecute(null));
            Assert.AreEqual(false, commands.MoveToLastCommand.CanExecute(null));
        }
示例#11
0
        public Window2()
        {
            InitializeComponent();

            var from = NavigationManager.GetOrCreateSharedSource <MyItemDetailsViewModel>();

            var to = new SharedSource <MyItemDetailsViewModel>();

            to.Sync(from);
            TabControl1.ItemsSource  = to.Items;
            TabControl1.SelectedItem = to.SelectedItem;
        }
示例#12
0
        public ShellViewModel(IEventAggregator eventAggregator)
        {
            this.eventAggregator = eventAggregator;
            OnTitleChanged("Navigation Sample [WPF]");

            this.Navigation      = NavigationManager.GetDefaultNavigationSource("Main");
            this.Commands        = new NavigationSourceCommands(Navigation);
            this.MenuItemsSource = NavigationManager.GetSharedSource <MenuItem>();

            this.Navigation.Navigated += OnNavigated;
            this.MenuItemsSource.SelectedItemChanged += OnMenuItemsSelectionChanged;
            eventAggregator.GetEvent <TitleChangedEvent>().Subscribe(OnTitleChanged);
        }
示例#13
0
        public MasterDetailViewModel(IEventAggregator eventAggregator, IFakePeopleLookupService fakePeopleLookupService)
        {
            this.eventAggregator         = eventAggregator;
            this.fakePeopleLookupService = fakePeopleLookupService;

            Navigation       = NavigationManager.GetDefaultNavigationSource("MasterDetails");
            PeopleListSource = new SharedSource <NavigationItemViewModel>();
            this.Commands    = new SharedSourceCommands(PeopleListSource);

            AddCommand    = new DelegateCommand(Add);
            DeleteCommand = new DelegateCommand(Delete, () => PeopleListSource.SelectedIndex != -1);
            PeopleListSource.SelectedItemChanged += PeopleListSource_SelectedItemChanged;
        }
示例#14
0
        public void ClearAsync()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            var item1 = sharedSource.AddNew("A");
            var item2 = sharedSource.AddNew("B");
            var item3 = sharedSource.AddNew("C");

            Assert.AreEqual(3, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(2));
            Assert.AreEqual(2, sharedSource.SelectedIndex);
            Assert.AreEqual(item3, sharedSource.SelectedItem);

            //  C => B => A
            var selections = new Dictionary <int, object>();

            sharedSource.SelectedItemChanged += (s, e) =>
            {
                //  1 B... 0 A
                selections.Add(e.SelectedIndex, e.SelectedItem);
            };

            sharedSource.Clear();
            Assert.AreEqual(true, item1.IsCanDeactivateInvoked);
            Assert.AreEqual(true, item1.IsOnNavigatingFromInvoked);
            Assert.AreEqual(true, item2.IsCanDeactivateInvoked);
            Assert.AreEqual(true, item2.IsOnNavigatingFromInvoked);
            Assert.AreEqual(true, item3.IsCanDeactivateInvoked);
            Assert.AreEqual(true, item3.IsOnNavigatingFromInvoked);
            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);
            Assert.AreEqual(null, sharedSource.SelectedItem);
            //   item3 removed(old index 2) ... select item2(index 1)
            Assert.AreEqual(1, selections.ElementAt(0).Key);
            Assert.AreEqual(item2, selections.ElementAt(0).Value);
            // item1 removed change index, select item1(index 0)
            Assert.AreEqual(0, selections.ElementAt(1).Key);
            Assert.AreEqual(item1, selections.ElementAt(1).Value);
            // empty items
            Assert.AreEqual(-1, selections.ElementAt(2).Key);
            Assert.AreEqual(null, selections.ElementAt(2).Value);
            Assert.AreEqual(3, selections.Count);
        }
示例#15
0
        public void ClearAsync_With_One_Item_CannotDeactivate()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            var item1 = sharedSource.AddNew("A");
            var item2 = sharedSource.AddNew("B");
            var item3 = sharedSource.AddNew("C");

            Assert.AreEqual(3, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(2));
            Assert.AreEqual(2, sharedSource.SelectedIndex);
            Assert.AreEqual(item3, sharedSource.SelectedItem);

            //  C => B X => A
            var selections = new Dictionary <int, object>();

            sharedSource.SelectedItemChanged += (s, e) =>
            {
                //  1 B... 0 B
                selections.Add(e.SelectedIndex, e.SelectedItem);
            };

            item2.CDeactivate = false;

            sharedSource.Clear();
            Assert.AreEqual(true, item1.IsCanDeactivateInvoked);
            Assert.AreEqual(true, item1.IsOnNavigatingFromInvoked);
            Assert.AreEqual(true, item2.IsCanDeactivateInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatingFromInvoked);
            Assert.AreEqual(true, item3.IsCanDeactivateInvoked);
            Assert.AreEqual(true, item3.IsOnNavigatingFromInvoked);
            Assert.AreEqual(1, sharedSource.Items.Count);
            Assert.AreEqual(0, sharedSource.SelectedIndex);
            Assert.AreEqual(item2, sharedSource.SelectedItem);
            // item3 removed(old index 2) ... select item2(index 1 B)
            Assert.AreEqual(1, selections.ElementAt(0).Key);
            Assert.AreEqual(item2, selections.ElementAt(0).Value);
            // item1 removed change index, same seleected item item2
            Assert.AreEqual(0, selections.ElementAt(1).Key);
            Assert.AreEqual(item2, selections.ElementAt(1).Value);
            Assert.AreEqual(2, selections.Count);
        }
示例#16
0
        public void Updates_Parameter()
        {
            var sharedSource = new SharedSource <MyViewModelThatChangeParameter>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            sharedSource.AddNew("p");

            Assert.AreEqual("p-canactivateviewmodel--onavigatingtoviewmodel--navigatedtoviewmodel-", MyViewModelThatChangeParameter.Parameter);

            MyViewModelThatChangeParameter.Parameter = null;

            sharedSource.RemoveAt(0);

            Assert.AreEqual("p-canactivateviewmodel--onavigatingtoviewmodel--navigatedtoviewmodel--candeactivateviewmodel--onavigatingfromviewmodel-", MyViewModelThatChangeParameter.Parameter);
        }
示例#17
0
        public void MoveItem()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            var item1 = sharedSource.AddNew("A");
            var item2 = sharedSource.AddNew("B");
            var item3 = sharedSource.AddNew("C");

            Assert.AreEqual(3, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(2));
            Assert.AreEqual(2, sharedSource.SelectedIndex);
            Assert.AreEqual(item3, sharedSource.SelectedItem);

            item2.Reset();
            item3.Reset();

            // move item2 B(index 1) => to index 2(last)
            sharedSource.Move(1, 2);

            // A C B
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(2));
            // select item moved item2
            Assert.AreEqual(2, sharedSource.SelectedIndex);
            Assert.AreEqual(item2, sharedSource.SelectedItem);
            // do not invoke navigation methods
            Assert.AreEqual(false, item2.IsCanActivateInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatingToInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatedToInvoked);
            Assert.AreEqual(false, item3.IsCanActivateInvoked);
            Assert.AreEqual(false, item3.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item3.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item3.IsOnNavigatingToInvoked);
            Assert.AreEqual(false, item3.IsOnNavigatedToInvoked);
        }
示例#18
0
        public void SelectedIndex_After_Deletion()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            var item1 = sharedSource.AddNew("A");
            var item2 = sharedSource.AddNew("B");
            var item3 = sharedSource.AddNew("C");

            Assert.AreEqual(3, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(2));
            Assert.AreEqual(2, sharedSource.SelectedIndex);
            Assert.AreEqual(item3, sharedSource.SelectedItem);

            // remove last
            sharedSource.RemoveAt(2);
            Assert.AreEqual(2, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(1, sharedSource.SelectedIndex);
            Assert.AreEqual(item2, sharedSource.SelectedItem);

            // remove first
            sharedSource.RemoveAt(0);
            Assert.AreEqual(1, sharedSource.Items.Count);
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(0, sharedSource.SelectedIndex);
            Assert.AreEqual(item2, sharedSource.SelectedItem);


            sharedSource.RemoveAt(0);
            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);
            Assert.AreEqual(null, sharedSource.SelectedItem);
        }
示例#19
0
        public void Initialization_With_List()
        {
            var item1 = new MySharedItem {
                Id = 1, Name = "A"
            };
            var item2 = new MySharedItem {
                Id = 2, Name = "B"
            };
            var sharedSource = new SharedSource <MySharedItem>().Load(new List <MySharedItem>
            {
                item1, item2
            });

            Assert.AreEqual(false, item1.IsCanActivateInvoked);
            Assert.AreEqual(true, item1.IsOnNavigatingToInvoked);
            Assert.AreEqual(null, item1.POnNavigatingTo);
            Assert.AreEqual(true, item1.IsOnNavigatedToInvoked);
            Assert.AreEqual(null, item1.POnNavigatedTo);
            Assert.AreEqual(false, item2.IsCanActivateInvoked);
            Assert.AreEqual(true, item2.IsOnNavigatingToInvoked);
            Assert.AreEqual(null, item2.POnNavigatingTo);
            Assert.AreEqual(true, item2.IsOnNavigatedToInvoked);
            Assert.AreEqual(null, item2.POnNavigatedTo);
        }
示例#20
0
        public void Initialization_With_Collection()
        {
            var item1 = new MySharedItem {
                Id = 1, Name = "A"
            };
            var item2 = new MySharedItem {
                Id = 2, Name = "B"
            };
            var sharedSource = new SharedSource <MySharedItem>().Load(new InitItemCollection <MySharedItem>
            {
                { item1, 1 }, { item2, 2 }
            });

            Assert.AreEqual(false, item1.IsCanActivateInvoked);
            Assert.AreEqual(true, item1.IsOnNavigatingToInvoked);
            Assert.AreEqual(1, item1.POnNavigatingTo);
            Assert.AreEqual(true, item1.IsOnNavigatedToInvoked);
            Assert.AreEqual(1, item1.POnNavigatedTo);
            Assert.AreEqual(false, item2.IsCanActivateInvoked);
            Assert.AreEqual(true, item2.IsOnNavigatingToInvoked);
            Assert.AreEqual(2, item2.POnNavigatingTo);
            Assert.AreEqual(true, item2.IsOnNavigatedToInvoked);
            Assert.AreEqual(2, item2.POnNavigatedTo);
        }
示例#21
0
        public void ReplaceItem()
        {
            var sharedSource = new SharedSource <MySharedItem>();

            Assert.AreEqual(0, sharedSource.Items.Count);
            Assert.AreEqual(-1, sharedSource.SelectedIndex);

            var item1 = sharedSource.AddNew("A");
            var item2 = sharedSource.AddNew("B");
            var item3 = sharedSource.AddNew("C");

            Assert.AreEqual(3, sharedSource.Items.Count);
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item2, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(2));
            Assert.AreEqual(2, sharedSource.SelectedIndex);
            Assert.AreEqual(item3, sharedSource.SelectedItem);

            // replace item2 by item4
            var item4 = sharedSource.CreateNew();

            item2.Reset();
            item4.Reset();
            item2.CDeactivate = false;
            sharedSource.Replace(1, item4, "D");
            Assert.AreEqual(true, item2.IsCanDeactivateInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item4.IsCanActivateInvoked);
            Assert.AreEqual(null, item4.PCanActivate);
            Assert.AreEqual(false, item4.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item4.IsOnNavigatingToInvoked);
            Assert.AreEqual(null, item4.POnNavigatingTo);
            Assert.AreEqual(false, item4.IsOnNavigatedToInvoked);
            Assert.AreEqual(null, item4.POnNavigatedTo);

            item2.Reset();
            item4.Reset();
            item4.CActivate = false;
            sharedSource.Replace(1, item4, "D");
            Assert.AreEqual(true, item2.IsCanDeactivateInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatingFromInvoked);
            Assert.AreEqual(true, item4.IsCanActivateInvoked);
            Assert.AreEqual("D", item4.PCanActivate);
            Assert.AreEqual(false, item4.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item4.IsOnNavigatingToInvoked);
            Assert.AreEqual(null, item4.POnNavigatingTo);
            Assert.AreEqual(false, item4.IsOnNavigatedToInvoked);
            Assert.AreEqual(null, item4.POnNavigatedTo);

            // with parameter
            item2.Reset();
            item4.Reset();
            sharedSource.Replace(1, item4, "D");
            //  A C B
            Assert.AreEqual(item1, sharedSource.Items.ElementAt(0));
            Assert.AreEqual(item4, sharedSource.Items.ElementAt(1));
            Assert.AreEqual(item3, sharedSource.Items.ElementAt(2));
            // select item updated
            Assert.AreEqual(1, sharedSource.SelectedIndex);
            Assert.AreEqual(item4, sharedSource.SelectedItem);
            // do not invoke navigation methods
            Assert.AreEqual(true, item2.IsCanDeactivateInvoked);
            Assert.AreEqual(true, item2.IsOnNavigatingFromInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatingToInvoked);
            Assert.AreEqual(false, item2.IsOnNavigatedToInvoked);
            Assert.AreEqual(true, item4.IsCanActivateInvoked);
            Assert.AreEqual("D", item4.PCanActivate);
            Assert.AreEqual(false, item4.IsOnNavigatingFromInvoked);
            Assert.AreEqual(true, item4.IsOnNavigatingToInvoked);
            Assert.AreEqual("D", item4.POnNavigatingTo);
            Assert.AreEqual(true, item4.IsOnNavigatedToInvoked);
            Assert.AreEqual("D", item4.POnNavigatedTo);
        }