/// <summary>
        /// Erzeugt eine Instanz der HomescreenViewModel Klasse.
        /// </summary>
        /// <param name="navService">Eine Referenz auf den Navigationsdienst der Anwendung.</param>
        /// <param name="errorMapper">Eine Referenz auf den Fehlerdienst der Anwendung.</param>
        public HomescreenViewModel(INavigationService navService, IErrorMapper errorMapper)
            : base(navService, errorMapper)
        {
            groupController = new GroupController();
            currentGroups = new Dictionary<int, Group>();

            // Initialisiere die Befehle.
            SearchChannelsCommand = new RelayCommand(param => executeSearchChannelsCommand(), param => canSearchChannels());
            AddGroupCommand = new RelayCommand(param => executeAddGroupCommand(), param => canAddGroup());
            SearchGroupsCommand = new RelayCommand(param => executeSearchGroupsCommand(), param => canSearchGroups());
            ChannelSelected = new RelayCommand(param => executeChannelSelected(param), param => canSelectChannel());
            GroupSelected = new RelayCommand(param => executeGroupSelected(param), param => canSelectGroup());
            SynchronizeAllGroupsCommand = new AsyncRelayCommand(param => executeSynchronizeAllGroupsCommandAsync(), param => canSynchronizeAllGroups());
            SynchronizeAllChannelsCommand = new AsyncRelayCommand(param => executeSynchronizeAllChannelsCommandAsync(), param => canSynchronizeAllChannels());
        }
        /// <summary>
        /// Erzeugt eine Instanz der Klasse AddAndEditBallotViewModel.
        /// </summary>
        /// <param name="navService">Eine Referenz auf den Navigationsdienst der Anwendung.</param>
        /// <param name="errorMapper">Eine Referenz auf den Fehlerdienst der Anwendung.</param>
        public AddAndEditBallotViewModel(INavigationService navService, IErrorMapper errorMapper)
            : base (navService, errorMapper)
        {
            groupController = new GroupController(this);

            if (BallotOptionsCollection == null)
                BallotOptionsCollection = new ObservableCollection<Option>();

            // Befehle
            CreateBallotCommand = new AsyncRelayCommand(
                param => executeCreateBallotCommandAsync(),
                param => canCreateBallot());
            EditBallotCommand = new AsyncRelayCommand(
                param => executeEditBallotAsync(),
                param => canEditBallot());
            AddBallotOptionCommand = new RelayCommand(
                param => executeAddOptionTextCommand(),
                param => canAddOptionText());
            RemoveBallotOptionCommand = new RelayCommand(
                param => executeRemoveOptionTextCommand(param),
                param => canRemoveOptionText());
        }
        /// <summary>
        /// Erzeugt eine Instanz der Klasse SearchGroupViewModel.
        /// </summary>
        /// <param name="navService"></param>
        /// <param name="errorMapper"></param>
        public SearchGroupViewModel(INavigationService navService, IErrorMapper errorMapper)
            : base (navService, errorMapper)
        {
            // Erzeuge Instanz von GroupController.
            groupController = new GroupController();

            if (Groups == null)
            {
                Groups = new ObservableCollection<Group>();
            }

            // Setze initiale Parameter.
            WorkingGroupSelected = true;
            TutorialGroupSelected = true;
            HasEmptySearchResult = false;

            // Befehle erzeugen
            GroupSelectedCommand = new AsyncRelayCommand(param => executeGroupSelectedCommandAsync(param));
            SearchGroupsCommand = new AsyncRelayCommand(
                param => executeSearchGroupsCommandAsync(),
                param => canSearchGroups()
                );
        }
        /// <summary>
        /// Erzeugt eine Instanz der Klasse AddGroupViewModel.
        /// </summary>
        /// <param name="navService">Eine Referenz auf den Navigationsdienst der Anwendung.</param>
        /// <param name="errorMapper">Eine Referenz auf den Fehlerdienst der Anwendung.</param>
        public AddAndEditGroupViewModel(INavigationService navService, IErrorMapper errorMapper)
            : base(navService, errorMapper)
        {
            // Erzeuge Referenz auf GroupController mit Validierungsfehler-Meldung.
            groupController = new GroupController(this);

            // Erzeuge Befehle.
            AddGroupCommand = new AsyncRelayCommand(param => executeAddGroupCommand(), param => canAddGroup());
            EditGroupCommand = new AsyncRelayCommand(param => executeEditGroupAsync(), param => canEditGroup());
        }
        /// <summary>
        /// Erzeugt eine Instanz der Klasse GroupDetailsViewModel.
        /// </summary>
        /// <param name="navService">Eine Referenz auf den Navigationsdienst der Anwendung.</param>
        /// <param name="errorMapper">Eine Referenz auf den Fehlerdienst der Anwendung.</param>
        public GroupDetailsViewModel(INavigationService navService, IErrorMapper errorMapper)
            : base(navService, errorMapper)
        {
            // Erzeuge Controller-Instanz.
            groupController = new GroupController(this);

            IsGroupParticipant = false;
            HasLeaveOption = false;

            localUser = groupController.GetLocalUser();

            if (BallotCollection == null)
                BallotCollection = new ObservableCollection<Ballot>();

            if (ConversationCollection == null)
                ConversationCollection = new ObservableCollection<Conversation>();

            // Erzeuge Befehle.
            JoinGroupCommand = new AsyncRelayCommand(
                param => executeJoinGroupCommandAsync(),
                param => canJoinGroup());
            LeaveGroupCommand = new AsyncRelayCommand(
                param => executeLeaveGroupCommandAsync(),
                param => canLeaveGroup());
            EditGroupCommand = new RelayCommand(
                param => executeEditGroupCommand(),
                param => canEditGroup());
            ConversationSelectedCommand = new RelayCommand(
                param => executeConversationSelectedCommand(param));
            SynchronizeDataCommand = new AsyncRelayCommand(
                param => executeSynchronizeDataCommandAsync(),
                param => canSynchronizeData());
            DeleteGroupCommand = new AsyncRelayCommand(
                param => executeDeleteGroupAsync(),
                param => canDeleteGroup());
            DeleteGroupLocallyCommand = new RelayCommand(
                param => executeDeleteGroupLocallyCommand(),
                param => canDeleteGroupLocally());
            ChangeToGroupSettingsCommand = new RelayCommand(
                param => executeChangeToGroupSettingsCommand(),
                param => canChangeToGroupSettings());
            ChangeToAddConversationDialog = new RelayCommand(
                param => executeChangeToAddConversationDialog(),
                param => canChangeToAddConversationDialog());
            BallotSelectedCommand = new RelayCommand(
                param => executeBallotSectedCommand(param));
            SwitchToCreateBallotDialogCommand = new RelayCommand(
                param => executeSwitchToCreateBallotDialogCommand(),
                param => canSwitchToCreateBallotDialog());
            SwichToGroupParticipantsViewCommand = new RelayCommand(
                param => executeSwitchToGroupParticipantsView(),
                param => canSwitchToGroupParticipantsView());
        }
        /// <summary>
        /// Erzeugt eine Instanz der Klasse BallotDetailsViewModel.
        /// </summary>
        /// <param name="navService">Eine Referenz auf den Navigationsdienst der Anwendung.</param>
        /// <param name="errorMapper">Eine Referenz auf den Fehlerdienst der Anwendung.</param>
        public BallotDetailsViewModel(INavigationService navService, IErrorMapper errorMapper)
            : base (navService, errorMapper)
        {
            groupController = new GroupController(this);
            localUser = groupController.GetLocalUser();

            if (BallotOptionCollection == null)
                BallotOptionCollection = new ObservableCollection<Option>();

            if (VoteResultsCollection == null)
                VoteResultsCollection = new ObservableCollection<VoteResult>();

            PlaceVotesCommand = new AsyncRelayCommand(
                param => executePlaceVotesCommand(),
                param => canPlaceVotes());
            SynchronizeBallotCommand = new AsyncRelayCommand(
                param => executeSynchronizeBallotCommand(),
                param => canSynchronizeBallot());
            SwitchToEditDialogCommand = new RelayCommand(
                param => executeSwitchToEditDialogCommand(),
                param => canSwitchToEditDialog());
            DeleteBallotCommand = new AsyncRelayCommand(
                param => executeDeleteBallotAsync(),
                param => canDeleteBallot());
        }
        /// <summary>
        /// Erzeugt eine Instanz der Klasse GroupSettingsViewModel.
        /// </summary>
        /// <param name="navService">Eine Referenz auf den Navigationsdienst der Anwendung.</param>
        /// <param name="errorMapper">Eine Referenz auf den Fehlerdienst der Anwendung.</param>
        public GroupSettingsViewModel(INavigationService navService, IErrorMapper errorMapper)
            : base (navService, errorMapper)
        {
            groupController = new GroupController();

            // Erzeuge Befehle.
            SaveNotificationSettingsCommand = new RelayCommand(
                param => executeSaveGroupNotificationSettingsCommand(),
                param => canSaveGroupSettings());
        }
        /// <summary>
        /// Erzeugt eine Instanz der Klasse GroupParticipantsViewModel.
        /// </summary>
        /// <param name="navService">Eine Referenz auf den Navigationsdienst der Anwendung.</param>
        /// <param name="errorMapper">Eine Referenz auf den Fehlerdienst der Anwendung.</param>
        public GroupParticipantsViewModel(INavigationService navService, IErrorMapper errorMapper)
            : base(navService, errorMapper)
        {
            groupController = new GroupController();

            if (ParticipantsCollection == null)
                ParticipantsCollection = new ObservableCollection<User>();

            // Befehle
            RemoveParticipantCommand = new AsyncRelayCommand(
                param => executeRemoveParticipantCommand(param),
                param => canRemoveParticipants());
            SynchronizeGroupParticipantsCommand = new AsyncRelayCommand(
                param => executeSynchronizeParticipants(),
                param => canSynchronizeParticipants());
            UpdateDisplayingWarningStatusCommand = new RelayCommand(
                param => executeUpdateDisplayingWarningStatus());
        }
        /// <summary>
        /// Erzeugt eine Instanz der Klasse AddAndEditConversationViewModel.
        /// </summary>
        /// <param name="navService">Eine Referenz auf den Navigationsdienst der Anwendung.</param>
        /// <param name="errorMapper">Eine Referenz auf den Fehlerdienst der Anwendung.</param>
        public AddAndEditConversationViewModel(INavigationService navService, IErrorMapper errorMapper)
            : base(navService, errorMapper)
        {
            groupController = new GroupController(this);

            // Erzeuge Befehle.
            AddConversationCommand = new AsyncRelayCommand(
                param => executeAddConversationCommandAsync(),
                param => canAddConversation());
            EditConversationCommand = new AsyncRelayCommand(
                param => executeEditConversationCommandAsync(),
                param => canEditConversation());
        }
 /// <summary>
 /// Erzeugt eine Instanz der Klasse PushNotificationController.
 /// </summary>
 public PushNotificationController()
     : base()
 {
     channelController = new ChannelController();
     groupController = new GroupController();
 }