Comment puis-je lier le premier plan à une propriété dans mon ViewModel?
Je voudrais lier la propriété foreground d'un TextBlock pour un Bien dans mon ViewModel.
Cela ne fonctionne pas :
Modifier
Vue :
TextBlock
Text="{Binding Path=FullName, Mode=OneWay}"
Foreground="{Binding Path=ForegroundColor}"
Margin="0 5 3 5"
Code derrière:
CustomerHeaderViewModel customerHeaderViewModel = new CustomerHeaderViewModel();
customerHeaderViewModel.LoadCustomers();
CustomerHeaderView.DataContext = customerHeaderViewModel;
Modèle De Vue:
private System.Windows.Media.Brush _foregroundColor;
_foregroundColor = System.Windows.Media.Brushes.DarkSeaGreen;
public System.Windows.Media.Brush ForegroundColor
{
get { return _foregroundColor; }
set { _foregroundColor = value;
OnPropertyChanged("ForegroundColor");
}
}
public CustomerHeaderViewModel()
{
ForegroundColor = System.Windows.Media.Brushes.Red;
}
Toutes les autres propriétés (Texte, etc) lier correctement.
Ce que je fais mal?
source d'informationauteur Joe.Net
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas une bonne pratique pour mettre les éléments d'INTERFACE utilisateur dans votre modèle de vue. Votre modèle de vue ne doivent encapsuler des affaires locig.
Si vous voulez changer la couleur de n'importe quoi dans votre INTERFACE utilisateur qui dépend de la valeur de votre zone de texte, il est préférable d'utiliser des données, des déclencheurs dans le code XAML.
Vous pouvez le faire comme ceci :
Viewmodel :
XAML (Édité à utiliser le sélecteur de couleurs, en supposant que la valeur sélectionnée de son contrôle est nommé "SelectedValue" et qu'il renvoie d'un Pinceau objet)