La liaison de la Visibilité dans le code XAML pour une propriété de Visibilité
J'ai vu sur internet quelques exemples de liaison d'un booléen à la propriété de Visibilité d'un contrôle dans le code XAML. La plupart des bons exemples d'utilisation d'un BooleanToVisibiliy convertisseur.
J'aimerais simplement définir la propriété Visible sur le contrôle de lier à un Système.De Windows.La visibilité de la propriété dans le code-behind, mais il ne semble pas vouloir travailler.
C'est mon XAML:
<Grid x:Name="actions" Visibility="{Binding Path=ActionsVisible, UpdateSourceTrigger=PropertyChanged}" />
C'est le code de la propriété:
private Visibility _actionsVisible;
public Visibility ActionsVisible
{
get
{
return _actionsVisible;
}
set
{
_actionsVisible = value;
}
}
Dans le constructeur de la Fenêtre, j'ai aussi cet appel:
base.DataContext = this;
Quand je l'ai mise à jour de ActionsVisible ou cette.actions.La visibilité, l'état n'a pas de transfert. Toutes les idées de ce qui pourrait mal se passer?
Vous avez accès à tous les contrôles sur le thread sur lequel ils ont été créés. Vous pouvez mettre à jour les contrôles à partir d'autres threads, mais vous devez marshall la mise à jour via le thread d'INTERFACE utilisateur à l'aide du Répartiteur WPF. Cette article devrait aider.
OriginalL'auteur Jared | 2008-12-21
Vous devez vous connecter pour publier un commentaire.
Je pense que le problème est que WPF peut pas savoir que votre ActionsVisible propriété a changé depuis que vous avez pas notifié le fait.
Votre classe devra implémenter INotifyPropertyChanged, puis dans votre méthode pour ActionsVisible vous aurez besoin pour tirer l'événement PropertyChanged avec ActionsVisible comme le nom de la propriété qui a changé.
Espère que cela aide...
Vous ne savez pas comment il fait ça alors! Voulez-vous publier plus de votre code? Le UpdateSourceTrigger propriété vient de contrôles lorsque la source (c'est à dire la propriété vous êtes de liaison) est mis à jour. Il n'aura aucun effet sur la visibilité de votre propriété.
Merci Craig. J'aurais dû être plus clair sur mon commentaire précédent. Je voulais dire que j'ai une zone de texte du Texte de propriété lié à une chaîne de propriété dans le code-behind. Qui ne fonctionne pas et si vous voulez continuer à voir la source de ce laissez-moi savoir.
Je voulais aussi vous remercier pour me dire d'utiliser ActionsVisible comme le nom de la propriété, parce que j'ai continué à obtenir XamlParseExceptions lorsque j'ai utilisé Visiblity comme le nom de la propriété et ne pouvait pas comprendre jusqu'à ce que je re-lu votre réponse.
Content d'avoir pu aider 🙂
OriginalL'auteur Craig Shearer
Changer votre propriété à une DependencyProperty. Cela permettra de gérer la mise à jour pour vous.
OriginalL'auteur NR.
Écrire:
NotifyPropertyChanged("ActionsVisible")
OriginalL'auteur bedi