WPF (Windows Presentation Framework) を使用する場合、データをコンボボックス コントロールにバインドする必要があることがよくあります。コンボボックスコントロール。データが列挙型として表される場合、ComboBox 項目に enum 値を直接表示するのは簡単です。
次のシナリオを考えてみましょう。さまざまなプロパティをカプセル化するクラスがあり、ComboBox をバインドしたいとします。これらのプロパティの 1 つに、列挙型として表されます。 DataContext をクラス インスタンスに設定し、XAML ファイルでバインディング構文を使用するのが一般的な方法です。ただし、この方法では、列挙型値がコンボボックス内の項目として表示されない場合があります。
コードからコンボボックスに列挙型値を直接表示するには、次の手順を実行します。
yourComboBox.ItemsSource = Enum.GetValues(typeof(EffectStyle)).Cast<EffectStyle>();
この行は、列挙値を取得し、それらを正しい型に変換し、ComboBox の ItemsSource プロパティに割り当てます。
または、XAML でバインディングを確立するには、 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>
この XAML コードは、ウィンドウのリソース内で ObjectDataProvider を定義します。 MethodName プロパティは GetValues に設定され、列挙値を取得します。 ObjectType プロパティは列挙型の型を指定し、MethodParameters プロパティはデータ プロバイダーが値を取得する列挙型の型を指定します。
XAML コードでは、名前空間とアセンブリが使用されることに注意することが重要です。 enum 型の値を指定する必要があります:
xmlns:System="clr-namespace:System;assembly=mscorlib" xmlns:StyleAlias="clr-namespace:Motion.VideoEffects"
これらのアプローチを使用すると、enum 値を WPF ComboBox コントロールにバインドできるようになり、簡単な操作が可能になります。ドロップダウン リストに列挙型を表示する方法。
以上がEnum 値を WPF ComboBox コントロールにバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。