2016-05-19 1 views
0

J'ai un ViewModel pour une fenêtreWPF besoin de se lier à un type complexe

public class MainWindowViewModel : ViewModelBase, INotifyPropertyChanged 
{ 
} 

Le viewmodel a une classe de base. La classe de base a un type complexe en tant que propriété créée au démarrage de l'application. À mon avis, j'ai besoin de lier aux propriétés de la propriété Config et d'obtenir des notifications de modification. La datacontext de la vue est le MainWindowViewModel et j'ai une déclaration contraignante comme

Text="{Binding Config.Property}" 

Tous les conseils sur la façon d'accomplir ce que je suis en train de?

+0

Vous ne savez pas si la propriété config doit figurer dans cette classe de base. Quelles sont les préoccupations/la relation de ViewMobelBase avec l'objet Configuration. Vous pouvez vouloir dans votre classe dérivée être plus spécifique à ce que vous essayez d'afficher – aqwert

+0

La raison pour laquelle il est dans la base est parce qu'il est également nécessaire dans d'autres ViewModels –

+0

Bien sûr ... mais cette classe "base" devrait contenir des éléments spécifiques de vue . Peut-être qu'un ConfigurationViewMobel dont vous héritez serait meilleur. Juste une observation plutôt que n'importe quoi faire avec votre problème. – aqwert

Répondre

0

Ce que vous avez là devrait fonctionner correctement. Si la propriété Config est en cours de modification, vous devez également ViewModelBase implémenter INotifyPropertyChanged et déclencher l'événement lorsque la propriété Config est modifiée, de même si les propriétés auxquelles vous liez dans la classe Configuration sont modifiées, cela doit également implémenter INotifyPropertyChanged et déclencher les événements lorsque ses propriétés changent.

+0

Vous pouvez également utiliser la classe .net 'Settings'. Cela hérite de 'ApplicationSettingsBase' et implimente automagiquement' INPC'. – Aron

+0

Cela a fonctionné. Merci! –