2010-12-13 2 views
1

ich die WPF-Steuerelemente wie diese geerbt haben wollenVererbung in WPF

public class BaseView : UserControl 
{ 
    ... 
}  

public class BaseListView : BaseView 
{ 
    ... 
} 

public class TeachersListView: BaseListView 
{ 
} 

public class StudentsListView : BaseListView 
{ 
} 

Here "BaseListView" ist die Basis eingestuft. Diese Klassen können mehrere Funktionalitäten haben, die von dem in "BaseListView" vorhandenen ListView abhängen. Ich möchte diese "BaseListView" auf mehrere Ansichten erben, die mehrere Spalten und verschiedene Datenbindungen hinzufügen können. Also meine Forderung ist

class BaseListView : BaseView 
{ 
    This class will have the UI parts like commandStrip and followed by "Empty ListView". 

    This "ListView" may not hold any columns in it. 
}  

class StudentsListView: BaseListView 
{  
    In **XAML** part, Columns and its appropriate Data Binding will be added. I need to access the controls in .cs file. so that i can access the controls. 

    void FindAndHighlightColumn() 
    { 
    // get the columns to find and search the list view and highlight. 
    } 
} 

Wie kann ich dies erreichen, was ist der richtige Weg, dies zu tun.

Antwort

1

Ich denke, dass Sie ein UserControl (Items oder ContentControl) mit einigen grundlegenden Funktionen wie FindAndHighlightColumn() erstellen möchten.

Sie können Ihre BaseListView "lookless" erstellen und dann ControlTemplates verwenden, um mehrere Varianten davon zu erhalten (erstellen Sie Stile wie "StudentListViewStyle" etc., jeweils mit einem entsprechenden ControlTemplate). Ein ControlTemplate ist eine Ansicht, so dass Sie in jeder Vorlage unterschiedliche Bindungen angeben können, um auf Controls mit ihren Namen zuzugreifen. Sie müssen eine Konvention mit bestimmten Teilen namens 'PART_XY' usw. definieren. Sehen Sie sich das ProgressBar-Control-Standard-Beispiel an.

0

Verwenden Sie die Model-View-ViewModel-Architektur? Nachdem ich Ihre Frage gelesen habe, ist mein erster Gedanke, dass ich Vererbung nicht in dem Ausmaß verwenden würde, an das Sie denken. Stattdessen würde ich die Zusammensetzung in Betracht ziehen.

Zum Beispiel könnten Sie eine zusammengesetzte StudentsListView erstellen, indem Sie eine .xaml-Datei mit mehreren Benutzersteuerelementen erstellen? Vielleicht ein Benutzersteuerelement zum Anzeigen Ihres BefehlsStrip und ein anderes Benutzersteuerelement zum Anzeigen des entsprechenden ListView (z. B. StudentListViewUserControl, TeacherListViewUserControl usw.).

+0

Wir verwenden jetzt "Zusammensetzung", aber es ist schwer zu verallgemeinern. Sagen wir zum Beispiel, in CommandStrip kann ich löschen, schließen Ereignis haben. Wenn ich diese Aufnahme von Dingen in "BassClass" mache, werde ich die "ScreenInfo" -Klasse haben, die alle Informationen enthalten wird, die geliefert werden können, um die Ereignisse durchzuführen. Wenn ich die "Vererbung" habe, kann ich die "ScreenInfo" an die Basis übergeben und kann von allen verwendet werden. Wenn das Zusammensetzung ist, muss ich für alle "Kompositions" Stücke bestehen. Wir stehen jetzt vor einem Problem, das ist der Grund, warum ich nach Vererbung suche. Wir verwenden Model-View-ViewModel, MVP und MVC wo. In Zukunft wird es eins sein. – Mohanavel