2011-09-27 109 views
1

現狀:
- 我有一個從System.Windows.Controls.ItemsControl
繼承的第三方控制 - 我有一個名爲foo的這種控制的實例
- 富有5個項目爲ListCollectionView數據源並沒有過濾器。 。
- foo.Items.Count給出了0
結果 - (System.Windows.Controls.ItemsControl)(富))的5尷尬的繼承問題

Items.Count當發生這種情況:
- 甲XAML.cs文件的構造

當發生這種情況:
- 在xaml.cs文件的構造
- 之後的InitializeComponent

未經證實的主張:
- 的所有者O f第三方控制權聲稱它不以任何方式覆蓋物品。

問:
- 爲什麼foo.Items.Count返回比(System.Windows.Controls.ItemsControl)(富))不同的值Items.Count

+0

您將需要顯示一些代碼。 –

+4

如果你打開一個反彙編程序(dotPeek是一個好的),你將能夠看到他們是否告訴你實話。聽起來像有可能是一個名爲'Items'的'new'屬性隱藏了基類的屬性。 –

+1

爲何未驗證?爲什麼不打開ILSpy並檢查? –

回答

7

聽起來好像他們已經重新申報其有時完成的屬性,即

public new SomeContainer Items { get { ... } } 

使類型的.Items(等)更具體的;但是,它會中斷繼承,除非注意覆蓋底層實現。重申他們的要求 - 如果上述內容是正確的,那麼他們不是以以任何方式覆蓋它;他們重新宣佈它(這取決於你是如何與「覆蓋」,也許)。

但是:您可以在任何反射工具或IL檢查工具中查看該屬性是如何聲明的。它是否有newnewslot