2

Well..its working但是隻有當用戶創建一個List類型的屬性。Silverlight:DependencyProperty(IList)不能正常工作的雙向綁定

下面是完整的場景。

我有一個模板控件(複選框多選組合框) 用戶給出一個列表/的ObservableCollection作爲它的的ItemsSource。該集合可以是任何類型(員工,主席,人員等)。 ItemsSource的DependencyProperty屬於IList類型。

用戶也可以給在一個DependencyProperty稱爲SelectedItems雙向綁定(使他能夠表現出一些項目,如檢查,並取回其被檢查的項目)

現在的問題是與SelectedItems列表DP。它是模板控件中的IList類型。 如果用戶已將其綁定到List<Person>,則雙向綁定不起作用。 但是,如果List<Person>更改爲List<object>,則它可以工作。

我無法弄清楚我做得不對的是什麼!

回答

1

SelectedItems屬性上放置TwoWay綁定沒有意義。這意味着控件應該創建並分配一個實現IList的對象實例到源對象上的屬性。但是,控制無法知道分配給屬性的實際類型。

相反,您應該使用OneWay綁定到源對象中預先存在的List,儘管它是空的。然後控制任務是簡單地從ItemsSource屬性中提供的列表中添加或刪除該列表中的成員。

+0

但是,當我將控件中的列表添加/刪除成員時,OneWay綁定會更新源代碼嗎? – Jags 2011-01-12 05:53:45