2012-06-09 59 views
-1

我在我的應用程序中有一堆DataGrid。我需要爲它們覆蓋一些受保護的虛擬方法。有沒有比使用從DataGrid類派生的不太熟悉的名稱更好的東西?我希望像附加屬性這樣的解決方案能夠使用自定義屬性指定過載行爲。忽略繼承保護虛擬

+0

我不知道我明白你在問什麼,請問你可以改述一下這個問題嗎? –

+0

這種情況下繼承有什麼問題?你不能打電話給你的問題派生類DataGrid,但必須選擇另一個名字?如果是的話,想想有多奇怪,它會是相同的命名類氾濫所有做事不同。 – Alan

+0

我想要做的是修復WPFToolkit DataGrid奇怪的b ug http://stackoverflow.com/questions/4017786/wpf-recursive-call-to-automation-peer-api-is-not-valid I.e.重寫OnCreateAutomationPeer()。但我不想在應用程序代碼中進行更改。我認爲這並不意味着DataGrid會有所不同。我只是想擺脫怪異的例外。 – vkrzv

回答

0

您必須重寫。重寫您自己的MyOwnDataGrid中的方法(或更短的名稱)。然後使用那個類,無論你使用datagrid。如果你有幾百個網格,你必須有一個奇怪的應用程序設計。如果您不想更改創建new DataGrid()的每個位置,我相信您可以更改使用指令。

using DatGrid = My.NameSpace.MyOwnDataGrid; 

你還是要做到這一點,使用DataGrid的每個文件,它使代碼有點混亂讀,所以我覺得這是更好地只是做一個全球查找/替換的「新的DataGrid(」至「new MyOwnDataGrid(」and you done。

+0

謝謝,但我所有的DataGrid在XAML中定義,而不是新的。 – vkrzv

+0

好的。在XAML中替換也應該可以正常工作。 –

0

在C#中,如果不從該方法繼承,就無法重寫方法。 MSDN-Override。 重寫方法的唯一方法是從該基類繼承。是否有一個原因,你不想從基類繼承?