// // $safeitemname$.xaml.cpp // Implementierung der $safeitemname$-Klasse // #include "pch.h" #include #include "$safeitemname$.xaml.h" using namespace $rootnamespace$; using namespace Platform; using namespace Platform::Collections; using namespace Windows::ApplicationModel::Activation; using namespace Windows::Foundation; using namespace Windows::Foundation::Collections; using namespace Windows::UI::Xaml; using namespace Windows::UI::Xaml::Controls; using namespace Windows::UI::Xaml::Controls::Primitives; using namespace Windows::UI::Xaml::Data; using namespace Windows::UI::Xaml::Input; using namespace Windows::UI::Xaml::Interop; using namespace Windows::UI::Xaml::Media; using namespace Windows::UI::Xaml::Navigation; // TODO: Suchergebnisseite mit der In-App-Suche verbinden. // Die Elementvorlage für die Seite "Suchergebnisse" ist unter http://go.microsoft.com/fwlink/?LinkId=234240 dokumentiert. $wizardregistrationcomment$$safeitemname$::$safeitemname$() { InitializeComponent(); SetValue(_defaultViewModelProperty, ref new Map(std::less())); SetValue(_navigationHelperProperty, ref new Common::NavigationHelper(this)); NavigationHelper->LoadState += ref new Common::LoadStateEventHandler(this, &$safeitemname$::LoadState); } DependencyProperty^ $safeitemname$::_navigationHelperProperty = nullptr; DependencyProperty^ $safeitemname$::_defaultViewModelProperty = nullptr; void $safeitemname$::RegisterDependencyProperties() { if (_navigationHelperProperty == nullptr) { _navigationHelperProperty = DependencyProperty::Register("NavigationHelper", TypeName(Common::NavigationHelper::typeid), TypeName($safeitemname$::typeid), nullptr); } if (_defaultViewModelProperty == nullptr) { _defaultViewModelProperty = DependencyProperty::Register("DefaultViewModel", TypeName(IObservableMap::typeid), TypeName($safeitemname$::typeid), nullptr); } } /// /// triviales Anzeigemodell verwendet werden kann. /// IObservableMap^ $safeitemname$::DefaultViewModel::get() { return safe_cast^>(GetValue(_defaultViewModelProperty)); } /// /// Ruft eine Implementierung von ab, das als /// triviales Anzeigemodell verwendet werden kann. /// Common::NavigationHelper^ $safeitemname$::NavigationHelper::get() { // return _navigationHelper; return safe_cast(GetValue(_navigationHelperProperty)); } #pragma region Navigation support /// Die in diesem Abschnitt bereitgestellten Methoden werden einfach verwendet, /// damit NavigationHelper auf die Navigationsmethoden der Seite reagieren kann. /// /// Platzieren Sie seitenspezifische Logik in Ereignishandlern für /// /// und . /// Der Navigationsparameter ist in der LoadState-Methode zusätzlich /// zum Seitenzustand verfügbar, der während einer früheren Sitzung gesichert wurde. void $safeitemname$::OnNavigatedTo(NavigationEventArgs^ e) { NavigationHelper->OnNavigatedTo(e); } void $safeitemname$::OnNavigatedFrom(NavigationEventArgs^ e) { NavigationHelper->OnNavigatedFrom(e); } #pragma endregion /// /// Füllt die Seite mit Inhalt auf, der bei der Navigation übergeben wird. Gespeicherte Zustände werden ebenfalls /// bereitgestellt, wenn eine Seite aus einer vorherigen Sitzung neu erstellt wird. /// /// Der Parameterwert, der an /// übergeben wurde, als diese Seite ursprünglich angefordert wurde. /// /// Ein Übersicht des Zustands, der von dieser Seite während einer früheren Sitzung /// beibehalten wurde. Beim ersten Aufrufen einer Seite ist dieser Wert NULL. void $safeitemname$::LoadState(Object^ sender, Common::LoadStateEventArgs^ e) { (void) sender; // Nicht verwendeter Parameter // Die zwei an das Parameterobjekt übergebenen Werte entpacken: Abfragetext und vorheriger Fensterinhalt auto queryText = safe_cast(e->NavigationParameter); // TODO: Anwendungsspezifische Suchlogik. Der Suchprozess ist verantwortlich für // das Erstellen einer Liste mit vom Benutzer wählbaren Ergebniskategorien: // // filterList->Append(ref new $safeitemname$Filter("", ), false); // // Nur der erste Filter, normalerweise "Alle", sollte mit "True" als drittes Argument übergeben werden, // um in einem aktiven Zustand zu starten. Ergebnisse für den aktiven Filter werden nachfolgend // in Filter_SelectionChanged bereitgestellt. auto filterList = ref new Vector(); filterList->Append(ref new $safeitemname$Filter("All", 0, true)); // Ergebnisse durch das Anzeigemodell kommunizieren DefaultViewModel->Insert("QueryText", "\u201c" + queryText + "\u201d"); DefaultViewModel->Insert("Filters", filterList); DefaultViewModel->Insert("ShowFilters", filterList->Size > 1); } /// /// Wird aufgerufen, wenn ein Filter mit einem RadioButton im nicht angedockten Zustand ausgewählt wird. /// /// Die ausgewählte RadioButton-Instanz. /// Ereignisdaten, die beschreiben, wie der RadioButton ausgewählt wurde. void $safeitemname$::Filter_Checked(Object^ sender, RoutedEventArgs^ e) { (void) e; // Nicht verwendeter Parameter auto filter = dynamic_cast(sender)->DataContext; // Die Änderung in die CollectionViewSource spiegeln. // Wird wahrscheinlich nicht benötigt. if (filtersViewSource->View != nullptr) { filtersViewSource->View->MoveCurrentTo(filter); } // Ermitteln, welcher Filter ausgewählt wurde auto selectedFilter = dynamic_cast<$safeitemname$Filter^>(filter); if (selectedFilter != nullptr) { // Die Ergebnisse in das entsprechende Filterobjekt spiegeln, um die // RadioButton-Darstellung im nicht angedockten Zustand zuzulassen und die Änderung selectedFilter->Active = true; // TODO: Auf die Änderung für den aktiven Filter reagieren, indem DefaultViewModel->Insert("Ergebnisse", ) // aufgerufen wird, wobei eine Auflistung von Elementen mit bindbaren Image-, Title-, Subtitle- und Description-Eigenschaften ist, // Sicherstellen, dass Ergebnisse gefunden werden IVector^ resultsCollection; if (this->DefaultViewModel->HasKey("Results") == true) { resultsCollection = dynamic_cast^>(this->DefaultViewModel->Lookup("Results")); if (resultsCollection != nullptr && resultsCollection->Size != 0) { VisualStateManager::GoToState(this, "ResultsFound", true); return; } } } // Informationstext anzeigen, wenn keine Suchergebnisse vorliegen. VisualStateManager::GoToState(this, "NoResultsFound", true); } $safeitemname$Filter::$safeitemname$Filter(String^ name, int count, bool active): _count(0), _active(false) { Name = name; Count = count; Active = active; } String^ $safeitemname$Filter::Name::get() { return _name; } void $safeitemname$Filter::Name::set(String^ value) { if (value == _name || (value != nullptr && value->Equals(_name))) { return; } _name = value; OnPropertyChanged("Name"); OnPropertyChanged("Description"); } int $safeitemname$Filter::Count::get() { return _count; } void $safeitemname$Filter::Count::set(int value) { if (value == _count) { return; } _count = value; OnPropertyChanged("Count"); OnPropertyChanged("Description"); } bool $safeitemname$Filter::Active::get() { return _active; } void $safeitemname$Filter::Active::set(bool value) { if (value == _active) { return; } _active = value; OnPropertyChanged("Active"); } String^ $safeitemname$Filter::Description::get() { return _name + " (" + _count.ToString() + ")"; } void $safeitemname$Filter::OnPropertyChanged(String^ propertyName) { PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName)); }