1

CodeBehind で定義済みの DependencyProperty を使用するにはどうすればよいですか?

これは私の DependencyProperty です:

    ItemContainerProperty = DependencyProperty.Register("ItemContainer",
                      typeof(ObservableCollection<Item>), typeof(Manager));
    }


    public ObservableCollection<Item> ItemContainer
    {
        get { return (ObservableCollection<Item>)GetValue(ItemContainerProperty); }
        set { SetValue(ItemContainerProperty, value); }
    }

私がそれをするとき:

for (int i = 0; i <= ItemContainer.Count - 1; i++)
{
}

次のエラー メッセージが表示されます: 内部例外: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

コードでプロパティを使用するにはどうすればよいですか?

4

1 に答える 1

1

DependencyPropertyのデフォルト値を定義しない場合は、ある時点で設定する必要があります。デフォルト値はnullです。

   public partial class MainWindow : Window
    {
        public ObservableCollection<string> Items
        {
            get { return (ObservableCollection<string>)GetValue(ItemsProperty); }
            set { SetValue(ItemsProperty, value); }
        }
        public static readonly DependencyProperty ItemsProperty =
            DependencyProperty.Register("Items", typeof(ObservableCollection<string>), typeof(MainWindow));

        public MainWindow()
        {
            InitializeComponent();

            Items = new ObservableCollection<string>();
        }
    }

それをしたくない場合は、依存関係プロパティ宣言でデフォルト値を定義できます。

   public partial class MainWindow : Window
    {
        public ObservableCollection<string> Items
        {
            get { return (ObservableCollection<string>)GetValue(ItemsProperty); }
            set { SetValue(ItemsProperty, value); }
        }
        public static readonly DependencyProperty ItemsProperty =
            DependencyProperty.Register("Items", typeof(ObservableCollection<string>), typeof(MainWindow), new PropertyMetadata(new ObservableCollection<string>()));

        public MainWindow()
        {
            InitializeComponent();
        }
    }
于 2013-02-28T12:43:01.417 に答える