J'ai un textblock dans un contrôle utilisateur et je souhaite définir le texte sur la valeur d'un attribut dans une classe. Est-il possible de modifier cette valeur lorsque l'attribut est modifié à partir d'un autre contrôle utilisateur différent?
in usercontrol1 p> la classe p> dans usercontrol2 p>
3 Réponses :
Je recommanderais de lire sur la liaison, est méchant pour résoudre ces problèmes.
https://www.tutorialspoingnet.com/wpf/wpf_data_binding.htm P>
Vous pouvez le faire sur n'importe quelle classe mais pour la simplicité, nous le ferons sur le codeBeHind de votre fenêtre / usercontrol / quoi que ce soit p>
donc la première chose d'abord, vous devez dire à votre contrôle de suivre la propriété que vous souhaitez. P>
private string _propertyToUpdate;
public string PropertyToUpdate
{
get{ return _propertyToUpdate; }
set
{
_propertyToUpdate = value;
OnPropertyChanged();
}
}
Vous pouvez déclarer un délégué / événement sur votre classe SetStStest pour informer les clients des modifications des valeurs de propriété:
SetsTest.Text = "Different Text";
Les deux contrôles doivent partager le même ViewModel.cs strong> p> dataContext code> car ils sont censés partager les mêmes données. Vous utilisez généralement reliure de données à Mettez à jour la vue (par exemple, un textblock code>) avec des données. <Window>
<Window.DataContext>
<ViewModel />
</Window.DataContext>
<StackPanel>
<!-- Since the DataContext is inherited (from Window element)
the DataContext of both UserControl elements is still the ViewModel class
-->
<UserControl1 />
<UserControl2 />
</StackPanel>
</Window>