2017-05-23 11 views
0

Ich habe eine Combobox in meiner Benutzeroberfläche. In meiner Netzwerkklasse habe ich eine Methode, die UDP-Pakete empfängt und die IP-Adressen von ihnen nimmt. Welchen Datentyp nehme ich zum Speichern der Adressen als Zeichenketten (Vector, IVector?). Und wie verbinde ich dieses Objekt, das die Adressen hat, mit meiner Combobox in der UI - so wird jede Adresse dynamisch in der Combobox angezeigt. Ich verwende C++ für die Netzwerkklasse und Xaml + C++ für die Benutzeroberfläche. Um Verwirrung zu vermeiden, ich bin mit der UWP-XAML-C++ Vorlage von Visual Studio 2017.UWP - Binden Sie einen Vektor an eine ComboBox in C++

Antwort

0

Welchen Datentyp nehme ich zum Speichern der Adressen als Strings (Vector, ivector?)

Ja, Vector kann als Sammelanbindung an die ComboBox verwendet werden. Weitere Informationen zur C++/CX-Sammlung finden Sie unter this document.

Und wie kann ich dieses Objekt verbinden, die die Adressen hat

Dazu brauchen wir data binding zu verwenden.

Beispiel: Angenommen, es gibt eine network Klasse enthält IpAddress Eigenschaft wie folgt:

-Code in MainPage.xaml.h

public ref class MainPage sealed 
{ 
public: 
    MainPage(); 
private: 
    void btnbinding_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); 
}; 

public ref class network sealed 
{ 
public: 
    property Platform::String^ IpAddress; 
}; 

Dann können wir die network Sammlung binden (Vektor) an die ComboBox wie folgt:

XAML-Code

<ComboBox x:Name="combo" > 
    <DataTemplate> 
     <TextBlock Text="{Binding IpAddress}"></TextBlock> 
    </DataTemplate> 
</ComboBox> 

-Code hinter

void CombboxC::MainPage::btnbinding_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) 
{ 
    Platform::Collections::Vector<network^>^ items = ref new Platform::Collections::Vector<network^>(); 
    network^ onenet = ref new network(); 
    onenet->IpAddress = "Test"; 
    items->Append(onenet); 
    combo->ItemsSource = items; 
} 
+0

dies nicht ganz ist, was ich meinte, ich habe für das Auffüllen des Vektors mit den Adressen eine Schleife in der Netzwerk-Klasse bekommt. Ich möchte nicht, dass der Code dahinter steht. Mein größtes Problem ist, wie man einen globalen Vektor in C++ erstellt, der von der Haupt-UI-Klasse gelesen wird. Ich weiß, wie man es in Java/C# macht, aber ich scheiterte beim Erstellen eines globalen Vektors in C++. – David

Verwandte Themen