0

ComboBox私のWPFアプリケーションには、列挙からの選択肢を作成するStackOverflowの質問への回答で見つけた拡張機能があります。どの投稿から取得したかは覚えていませんが、これは問題ではないので、関係ありません。

WPFアプリケーションの製品のバックエンドにDLLを使用しています。このDLLにはComboBox、前述の拡張機能を使用してユーザーに選択してもらいたい列挙型があります。XAMLで適切なxmlnsが定義されています。

問題は、私の列挙が別のクラスのサブクラスであるということです。つまり、次のように定義されています。

public class MyClass {

    . . .

    public enum MyEnum { . . . }

    . . .
}

のXAMLは次のComboBoxようになります。

<ComboBox ItemsSource="{Binding Source={cs:Enumeration {x:Type ns:MyClass.MyEnum}}}" 
          . . . />

「MyClass」と入力するときに、親クラス名をサブタイプの名前から区切るためにピリオドを入力すると、Intellisenseは上位レベルのクラス名を再度提供します。とにかくピリオドの後にサブクラス名を入力すると、コンパイラは「タイプMyClass.MyEnumが見つかりません」というエラーを表示します。

列挙型の名前を正しく指定するにはどうすればよいですか?

4

2 に答える 2

0

ComboBox私はこれをパントして、データベースから取得した選択肢をロードするために使用するのと同じメカニズムを使用することにしました。あれは:

  1. ObservableCollection選択肢を保持するビューモデルクラスを作成しました
  2. ビューObservableCollectionモデルクラスのコンストラクターに、と呼ばれるジェネリックカスタムクラスのオブジェクトを設定しますItemChoice。宣言は次のようになります。

    public ObservableCollection <ItemChoice <MyClass.MyEnum >> EnumChoices {get; セットする;

  3. ComboBox's ItemsSourceプロパティをEnumChoicesXAMLのコレクションにバインドしました。

  4. ビューモデルのコンストラクターで、コレクションをインスタンス化し、列挙内の選択肢ごとに1つずつ、EnumChocies新しいオブジェクトをロードします。ItemChoice

これはすべて機能します。これで、コードに関する他の問題に進むことができます。

于 2012-11-30T19:16:19.650 に答える
0

使用してみてください:

{x:Type ns:MyClass+MyEnum}

http://neilmosafi.blogspot.co.uk/2007/08/dec-06-wpfxaml-xtype-and-nested-classes.html

于 2012-11-30T17:14:08.870 に答える