

下記のようなユーザーコントロールを作成しました。

[code]

    <UserControl x:Class="MyCombobox"
        ...
    
    <ComboBox x:Name="Value" ItemsSource="{Binding MyItemsSource}"/>
    
[/code]

さらにMyItemsSourceの依存プロパティを下記のように設定しました。

[code]

    public partial class MyCombobox : UserControl
    {
        public MyCombobox ()
        {
            InitializeComponent();
        }
    
        public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register("MyItemsSource",
                                                                                             typeof(IEnumerable<string>),
                                                                                             typeof(MyCombobox),
                                                                                             new FrameworkPropertyMetadata("MyItemsSource");
    
        public IEnumerable<string> MyItemsSource
        {
            get { return (IEnumerable<string>)GetValue(ItemsSourceProperty); }
            set { SetValue(ItemsSourceProperty, value); }
        }
    }
    
[/code]

メインウインドウで下記のように使用しました。

[code]

    <Window x:Class="MainWindow"
        ・
        ・
        ・
    <local:MyCombobox x:Name="FontType" MyItemsSource="{Binding testEnums}"/>
    
[/code]

testEnumsは下記の型の変数で、ViewModelに記載されています。

[code]

    ObservableCollection<string>
    
[/code]

コンパイルは通るのですがメインウインドウのxamlに「既定値の型がプロパティ"MyItemsSource"の型と一致しません。」と警告が表示され実行すると例外で落ちてしまいます。

コンボボックスのItemsSourceにEnumのリストをバインドしたいのですがどこを直せばよいのかわかりません。  
どなたか何かご存知でしたら、教えてください。。。


CC BY-SA 3.0
2017-04-03T07:22:23.063
33738
2017-10-18T01:22:08.837
2017-04-03T09:07:48.680
21333
21333
question
c# wpf
WPF コンボボックスのItemsSourceにEnumのリストをバインドできない


エラーメッセージの

> 既定値の型がプロパティ"MyItemsSource"の型と一致しません。

にある「既定値」はソースコードの`new
FrameworkPropertyMetadata("MyItemsSource")`の引数`"MyItemsSource"`を指しますが、この値は`IEnumerable<string>`に変換できないためエラーとなっています。互換性のある`null`や`new
string[0]`などに変更してください。

なおC#/.NETの用語では`Enum`(列挙型/列挙値)は`enum`キーワードを使用して宣言された型のみを指し、質問のように`IEnumerable<string>`をEnumと称するのは誤りです。


CC BY-SA 3.0
2017-04-03T08:34:22.850
33741
2017-04-03T08:34:22.850
5750
33738
answer