2014-02-06 72 views
0

我正在使用WPFMahApps Metro controls如何在不使用插入的情況下向類中注入代碼?

我已經爲我所有的Window類創建了一個基類,它實現了INotifyPropertyChanged接口。

public class WindowBase : MetroWindow,INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 
    public event PropertyChangingEventHandler PropertyChanging; 

    protected virtual void RaisePropertyChanging(string propertyName) 
    { 
     PropertyChangingEventHandler handler = PropertyChanging; 
     if (handler != null) handler(this, new PropertyChangingEventArgs(propertyName)); 
    } 

    /* code ommited */ 
} 

而且我想用它在我的窗口類,像這樣:

public partial class MainWindow : WindowBase 

我的XAML代碼中使用MahApps MetroWindow:

<controls:MetroWindow ... 

這會導致以下錯誤:

Partial declarations of 'MainWindow' must not specify different base classes MainWindow.xaml.cs

所以爲了使用IN PC的實現,在我所有的類中,我需要找到一種方式將這些代碼注入窗口cals中,以其他方式直接插入。有任何想法嗎?

+1

這是錯誤的。 'INotifyPropertyChanged'不屬於'DependencyObject's。 'DependencyObject'擁有自己的屬性更改通知機制('DependencyProperty')。改爲創建一個合適的ViewModel。 –

+2

@Shabgard - 靜態類是密封的。你不能從它繼承。 –

+0

@RohitVats這是一個錯字的先生。 – Shabgard

回答

2

代碼背後,是您查看的局部聲明,並從錯誤中,你不能爲類的局部聲明中指定不同的基類爲明顯。

在代碼背後,你從WindowBase得到它,並在xaml中聲明它是MetroWindow

查看聲明應該與<local:WindowBase..一樣,其中local將是WindowBase聲明的命名空間。

相關問題