/ / Binden des Basisklassenobjekts an Gridview itemSource in der Windows Store-App (Metro-App) C ++ funktioniert nicht - Visual-C ++, Rasteransicht, Datenbindung, Windows-Laufzeitumgebung, Windows-Store-Apps

Bindendes Basisklassenobjekt an Gridview itemSource in Windows Store App (Metro App) C ++ funktioniert nicht - Visual-C ++, Gridview, Datenbindung, Windows-Laufzeit, Windows-Store-Apps

In meiner Windows Store App implementiere ich die Eigenschaftchange event in einer Basisklasse mit dem Namen "BaseClass", und schreibe die Eigenschaften, die ich an mein gridview-Element binden möchte, und erbe die Basisklasse "BaseClass" in der Abgeleiteten Klasse "DerivedClass".

[Windows::UI::Xaml::Data::Bindable]
ref class BaseClass: Windows::UI::Xaml::DependencyObject, Windows::UI::Xaml::Data::INotifyPropertyChanged
{
}

ref class DerivedClass: public BaseClass
{
}

dann habe ich eine Windows :: UI :: Xaml :: Interop :: erstelltIBindableObservableVector ^ vector und Anhängen des Basisklassenobjekts aus dem abgeleiteten Klassenobjekt mit safe_cast. Die Basisklassendaten werden jedoch nicht an die Rasteransicht gebunden. Wenn Sie jedoch ein Objekt der Basisklasse erstellen, können die Daten an die Rasteransicht gebunden werden.

DerivedClass^ derivedClass = ref new DerivedClass();
BaseClass^ baseClass = safe_cast<BaseClass^>(derivedClass);

Windows::UI::Xaml::Interop::IBindableObservableVector^ m_Vector = ref new Platform::Collections::Vector<BaseClass^>();
m_Vector->Append(baseClass);

gridview->ItemsSource = m_Vector; // Not binding data to gridview.

aber

BaseClass^ baseClass2 = ref new BaseClass();
Windows::UI::Xaml::Interop::IBindableObservableVector^ m_Vector = ref new Platform::Collections::Vector<BaseClass^>();
m_Vector->Append(baseClass2);

gridview->ItemsSource = m_Vector; // its Binding data to gridview.

Antworten:

0 für die Antwort № 1

Möglicherweise müssen Sie Ihr Ansichtsmodell mit Anmerkungen versehen bindbar:

[Windows::UI::Xaml::Data::Bindable]
ref class DerivedClass: public BaseClass
{

}