1

如何在我的 CodeBehind 中使用定义的 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 回答