2010-12-13 24 views
1

Je veux avoir les contrôles hérités comme WPF cela,Héritage dans WPF

public class BaseView : UserControl 
{ 
    ... 
}  

public class BaseListView : BaseView 
{ 
    ... 
} 

public class TeachersListView: BaseListView 
{ 
} 

public class StudentsListView : BaseListView 
{ 
} 

Ici "BaseListView" est la base classée. Ces classes peuvent avoir plusieurs fonctionnalités qui dépendent du ListView présent dans "BaseListView". Je veux hériter de cette "BaseListView" à plusieurs vues qui peuvent ajouter plusieurs colonnes et avec différentes liaisons de données. Donc, mon exigence est

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. 
    } 
} 

Comment puis-je réaliser cela, quelle est la bonne façon de le faire.

Répondre

1

Je pense que vous voulez créer un UserControl (Items- ou ContentControl) avec des fonctionnalités de base comme FindAndHighlightColumn().

Vous pouvez créer votre baseListView "sans apparence", puis utiliser ControlTemplates pour en obtenir plusieurs styles (créer des styles comme "StudentListViewStyle" etc., chacun avec un ControlTemplate approprié). Un ControlTemplate est une vue, vous pouvez donc spécifier différentes liaisons dans chaque modèle, pour accéder aux contrôles par leurs noms, vous devez définir une convention avec certaines parties nommées 'PART_XY' etc, regardez le standard ProgressBar-Control pour un exemple.

0

Utilisez-vous l'architecture Model-View-ViewModel? Après avoir lu votre question, ma pensée initiale est que je n'utiliserais pas l'héritage dans la mesure où vous pensez. Au lieu de cela, je considérerais la composition. Par exemple, pourriez-vous créer un StudentsListView composite en composant un fichier .xaml de plusieurs contrôles utilisateur? Peut-être qu'un utilisateur contrôle l'affichage de votre commande commandStrip et un autre contrôle utilisateur pour afficher le ListView approprié (par exemple, StudentListViewUserControl, TeacherListViewUserControl, etc.).

+0

Nous utilisons maintenant "composition", mais il est difficile de généraliser. Dites par exemple, dans CommandStrip je peux avoir Supprimer, Fermer l'événement. Si je mets ce cliché de choses dans "BassClass" et que j'aurai la classe "ScreenInfo" qui contiendra toutes les informations qui peuvent être fournies pour effectuer les évènements. Si j'ai le "Héritage", je peux passer le "ScreenInfo" à la base et peut être utilisé par tous. Si c'est Composition, je dois passer pour toutes les pièces "composition". Nous sommes confrontés à un problème maintenant, c'est la raison pour laquelle je cherche l'héritage. Nous utilisons Model-View-ViewModel, MVP et MVC où. À l'avenir, il en sera un. – Mohanavel