locked
enum 定義のxaml上での表現は? RRS feed

  • 質問

  • カスタムコントロールに独自のプロパティを追加します。

    そのプロパティにenum型を使用したいのですが、xamlでそのプロパティを指定する際の表記が分かりません。

    // カスタムコントロールのコード
    public partial class MyControl : UserControl
    {
      public enum MyType
      {
        Type1,
        Type2
      }
    
      public MyType myType { set; get; }
    }
    

    このコントロールを親画面となるxamlから設定します。

    <Grid x:Name="LayoutRoot" Background="White">
        <MyProject_ctrl:MyControl myType="★" />
    </Grid>
    

    ★の部分はどのように表記すればいいのでしょうか? 単純にint型に見立てて数値を記入すればenumの順番として解釈されて動くのですが、それではenumにした意味がありません。WPF等でxamlを勉強すれば基本的なお話しなのかも知れませんが、よろしくお願いいたします!

     

    2010年6月6日 8:59

回答

すべての返信

  • 普通に myType="Type2" で大丈夫ですが?
    何が問題なのでしょうか?

    環境によって動かないとかあるなら教えてください。

     


    えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2010/12
    2010年6月6日 10:09
  • まだ確認していませんが、それなぜ「普通」なのか、その根拠、あるいはルールを教えていただけないでしょうか?

    具体的には、C#のソースコードでも 「MyType.Type2」 といった表記が必要なのに、xamlでは「Type2」だけでよいということが私には理解できないので、そのあたりのご説明をいただけると有難いです。

    あなたにとって「普通」な事が私には分かりません。よほど馬鹿なのでしょうね。
    私のような馬鹿にも分かりやすく教えていただけませんか?

    あるいは、そのルールについての出典を教えていただけましたら大変助かります。

    2010年6月6日 17:55
  • xaml はすべてを文字列で書かなければいけないので実際のクラスに代入する際に型によって変換を行います。

    この場合は enum MyType の型ですので enum の型変換によって Type2 が適切な enum 値に変換されます。


    えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2010/12
    2010年6月6日 18:07
  • 理解できません。
    その変換のルールとやらはどこに説明があるのでしょうか?
    2010年6月6日 18:26
  • WPF等でxamlを勉強すれば基本的なお話しなのかも知れませんが

    XAML構文の詳細

    http://msdn.microsoft.com/ja-jp/library/ms788723.aspx

    Silverlightは元々WPFのサブセットとして生まれてきた背景があるので

    WPFの説明として賄われていることが割とあるように思います。

    • 回答としてマーク cafelasm 2010年6月7日 6:40
    2010年6月7日 0:05
  • ありがとうございます。「列挙体の属性値」という所に説明がありました。

    2010年6月7日 6:41