Je débute dans WPF, et j'ai un peu de mal à mettre en œuvre la liaison de données.
Plus précisément, j'ai créé un simple contrôle utilisateur qui contient une étiquette et un bouton. Pour ce contrôle utilisateur, j'ai créé un ViewModel qui contient seulement deux propriétés, string
"Texte" et SimpleEnum
"Statut".
Le but de ce contrôle est d'afficher un état, comme "Connecté" oui/non, etc. La couleur de fond du bouton indique l'état.
Mon XAML ressemble à quelque chose comme ceci
<Control.DataContext>
<vm:OnOffStatusViewModel />
</Control.DataContext>
<Label x:Name="label1" Height="Auto" HorizontalAlignment="Left" Content="{Binding Text}" Width="280" />
<Button Style="{StaticResource GlassButton}" Height="14" Width="14" Background="{Binding Status}" Grid.Column="1" />
avec xmlns:vm="clr-namespace:Controls"
Le code-behind a une propriété ViewModel
exposant le modèle de vue, implémentant INotifyPropertyChanged, et s'initialisant en tant que _viewModel = (OnOffStatusViewModel) DataContext;
Maintenant, dans ma vue qui utilise ce contrôle, j'ai réussi à définir le texte à quelque chose, comme je l'ai fait dans le code-behind de ma vue d'implémentation. onOffStatus1.ViewModel.Text = ...
Toutefois, l'état est défini par un enum et, en tant que tel, il ne peut pas vraiment être lié à la propriété background du bouton.
Mes questions portent sur ce point :
-
La façon dont j'ai effectué le contrôle est-elle correcte ? Si ce n'est pas le cas, quelle est la bonne façon de mettre en œuvre la liaison de données dans les contrôles utilisateur ?
-
Comment puis-je faire en sorte que le statut de mon enum mette à jour la propriété d'arrière-plan du bouton en utilisant la liaison ?