2013-08-18 46 views
2

我寫了這個代碼在WPF:如何在WPF中創建Abstract類的System控件的實例?

System.Windows.Controls.Panel Panel1 = null; 
    Panel1 = new System.Windows.Controls.Panel(); 

但它說:

Error1 Cannot create an instance of the abstract class or interface 'System.Windows.Controls.Panel' 

如何解決這個問題?誰能回答我的問題嗎?

+6

錯誤信息是正確的!您只是無法創建任何抽象類或接口的實例。你究竟在做什麼? –

+0

@MitchWheat我想創建一個面板/ –

+0

什麼類型的面板? –

回答

1

不能創建抽象類的實例看abstract keyword

您可以從抽象類派生,然後你可以將用戶派生objces作爲抽象類型,見polymorphisminheritance

+1

如果已經有這麼多,我不認爲有必要從'Panel'派生一個新類。 – Default

5

MSDN -

抽象類不能被實例化,並且通常是部分實現的 ,或根本沒有實現。

如果您需要Panel,請創建一個派生自Panel的類的對象。最流行的是

  • 電網
  • DockPanel中
  • 的StackPanel
  • 帆布

完成從面板派生類可以發現here名單。

這將有助於你的目的 -

System.Windows.Controls.Panel Panel1 = new System.Windows.Controls.DockPanel(); 

但我認爲你需要訪問DockPanel中(和屬性具體到DockPanel中)的Dock財產,所以你應該創建DockPanel中對象,而不是 -

System.Windows.Controls.DockPanel Panel1 = new System.Windows.Controls.DockPanel(); 
+0

您可以參考[這些](http://msdn.microsoft.com/en-us/library/system.windows.controls.panel.aspx#inheritanceContinued) – Default

+0

已添加引用。謝謝。 –

+0

我的MainWindow.xaml中有DockPanelA。我定義了MVVM框架來編輯,刪除和更新網格中的數據。我想在ViewModel類中創建新的PanelB,只要點擊一個名爲「New」的按鈕。 PanelA會隱藏,PanelB應該佔據Panle A的位置? –