2011-05-11 50 views
0

我們一直使用控件,例如一個按鈕,有時我們可能想要爲該按鈕添加一些自定義屬性。例如numberOfTimesClicked等。我目前正在使用GridViewColumnHeader,我想將屬性columnIndex添加到該類。我知道我可以跟蹤其他方法的列,但我只是很好奇,知道我們是否可以爲類添加額外的屬性。例如,我正在考慮繼承。如果我創建一個新類並繼承我想添加新屬性的類(在我的情況下爲GridViewColumnHeader),那麼我認爲應該可以工作,但是由於某種原因,我會在我的代碼中遇到錯誤:將屬性添加到非用戶定義的類

private class MyGridViewColumnHeader : GridViewColumnHeader 
{ 
    public int propertyThatIWantToAdd { get; set; } 
} 

從現在開始如果我從MyGridViewColumnHeader類而不是GridViewColumnHeader類實例化對象我得到錯誤。使用繼承來達到這個目的有什麼問題?

+2

你有什麼錯誤? – dlev 2011-05-11 05:04:16

+1

你會得到什麼樣的錯誤? – thumbmunkeys 2011-05-11 05:04:57

+0

如果你沒有說出你的錯誤是什麼,我們不能幫助... – Darbio 2011-05-11 05:06:37

回答

0

相反鑄造sender對象使用

e.OriginalSource as MyGridViewColumnHeader 

,並做對象對你的工作。如果你需要知道RoutedEventArgs裏面有什麼MSDN

+0

正是,知道我明白爲什麼我只是得到一些錯誤。我可以從一些類轉換成MysomeClass,但是我不能從MySomeClass轉換到某個類。我修改了委託,而不是傳遞一個someClass參數,我告訴它通過一個MySomeClass參數,現在一切都很好! – 2011-05-11 05:37:55

+0

所以e.OriginalSource變成了一些類,我無法將一些類轉換爲MySomeClass。當你說我必須查看哪些參數正在通過時,這是另一種方法 – 2011-05-11 05:40:26

0

你應該使類publicprivate修飾符只允許內部類。

如果要訪問XAML中的屬性,還應該使用Dependency Properties而不是普通屬性。

+0

我仍然收到錯誤消息。我不明白爲什麼如果MyGridViewColumnHeader繼承自GridViewColumnHeader,我無法投射GridViewColumnHeader到MyGridViewColumnHeader。我得到的錯誤之一是:無法投入'System.Windows.Controls.GridViewColumnHeader'類型的對象來鍵入'MyGridViewColumnHeader'。 – 2011-05-11 05:14:49

+0

我是新來的繼承。也許我忘了做點別的... – 2011-05-11 05:16:36

+0

@Tom:給我們你真正的,沒有背後的,原始的例外,所以我們知道你有什麼錯誤......或永遠保持和平(片?).. – Darbio 2011-05-11 05:23:44

相關問題