Heim >Backend-Entwicklung >C++ >Wie binde ich Enum-Werte an ein WPF-ComboBox-Steuerelement?
Bei der Arbeit mit WPF (Windows Presentation Framework) kommt es häufig vor, dass Daten an a gebunden werden müssen ComboBox-Steuerelement. In Fällen, in denen die Daten als Aufzählung dargestellt werden, kann die Anzeige der Aufzählungswerte direkt in den ComboBox-Elementen unkompliziert sein.
Stellen Sie sich das folgende Szenario vor: Sie haben eine Klasse, die verschiedene Eigenschaften kapselt, und Sie möchten Ihre ComboBox binden auf eine dieser Eigenschaften, die als Aufzählung dargestellt wird. Ein typischer Ansatz ist das Festlegen des DataContext auf die Klasseninstanz und die Verwendung einer Bindungssyntax in der XAML-Datei. Dieser Ansatz führt jedoch möglicherweise nicht dazu, dass die Enum-Werte als Elemente in der ComboBox angezeigt werden.
Um Enum-Werte direkt in der ComboBox aus dem Code anzuzeigen, führen Sie die folgenden Schritte aus kann übernommen werden:
yourComboBox.ItemsSource = Enum.GetValues(typeof(EffectStyle)).Cast<EffectStyle>();
Diese Zeile ruft die Enum-Werte ab, konvertiert sie in den richtigen Typ und weist sie der ItemsSource-Eigenschaft der ComboBox zu.
Alternativ kann die Bindung auch in XAML mithilfe eines hergestellt werden ObjectDataProvider:
<Window> <Window.Resources> <ObjectDataProvider x:Key="dataFromEnum" MethodName="GetValues" ObjectType="{x:Type System:Enum}"> <ObjectDataProvider.MethodParameters> <x:Type TypeName="Motion.VideoEffects:EffectStyle"/> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Window.Resources> <Grid> <ComboBox ItemsSource="{Binding Source={StaticResource dataFromEnum}}" SelectedItem="{Binding Path=CurrentEffectStyle}" /> </Grid> </Window>
Dieser XAML-Code definiert einen ObjectDataProvider innerhalb der Ressourcen des Fensters. Die MethodName-Eigenschaft ist auf GetValues festgelegt, wodurch die Enumerationswerte abgerufen werden. Die ObjectType-Eigenschaft gibt den Typ der Aufzählung an, und die MethodParameters-Eigenschaft stellt den Typ der Aufzählung bereit, für den der Datenanbieter Werte abrufen soll.
Es ist wichtig zu beachten, dass im XAML-Code der Namespace und die Assembly enthalten sind des Enum-Typs muss bereitgestellt werden:
xmlns:System="clr-namespace:System;assembly=mscorlib" xmlns:StyleAlias="clr-namespace:Motion.VideoEffects"
Durch die Verwendung dieser Ansätze wird es möglich, Enum-Werte an WPF-ComboBox-Steuerelemente zu binden, was eine einfache Möglichkeit bietet Aufzählungen in einer Dropdown-Liste anzeigen.
Das obige ist der detaillierte Inhalt vonWie binde ich Enum-Werte an ein WPF-ComboBox-Steuerelement?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!