XAML de Liaison à la propriété
J'ai case à cocher dans mon XAML+C# application du Windows Store. J'ai également bool propriété: WindowsStoreTestApp.SessionData.RememberUser
qui est publique et statique.
Je veux case à cocher de la propriété IsChecked
pour être cohérent (ou relié, ou mappé) à ce bool propriété.
J'ai essayé ceci:
XAML
<CheckBox x:Name="chbRemember1" IsChecked="{Binding Mode=TwoWay}"/>
C#
chbRemember1.DataContext = SessionData.RememberUser;
Code de la propriété:
namespace WindowsStoreTestApp
{
public class SessionData
{
public static bool RememberUser { get; set; }
}
}
Mais il ne semble pas fonctionner. Pouvez-vous m'aider?
Pouvez-vous préciser ce qui ne fonctionne pas? Est-il les deux sens de la mise à jour qui ne fonctionne pas? N'est-il pas de travail? Aussi, pouvez-vous montrer le code pour SessionData (surtout RememberUser)? Qui va nous aider à diagnostiquer le problème.
Chaque fois que l'un d'eux change, la deuxième doit changer aussi.
Selon ce que j'changement, la cartographie ne fonctionne pas. J'ai essayé de changer la propriété dans le code, ne cochez pas la case. Essayé en face, coché la case, puis affiché dans le débogueur, la propriété n'a pas changé
J'aime le classique à ce genre de questions. Découvrez cette liaison marcher à travers les blog.jerrynixon.com/2012/10/xaml-binding-basics-101.html et de se concentrer sur INotifyPropertyChanged.
Merci, je pensais simplement qu'il est intégré et facile fonctionnalité
Chaque fois que l'un d'eux change, la deuxième doit changer aussi.
Selon ce que j'changement, la cartographie ne fonctionne pas. J'ai essayé de changer la propriété dans le code, ne cochez pas la case. Essayé en face, coché la case, puis affiché dans le débogueur, la propriété n'a pas changé
J'aime le classique à ce genre de questions. Découvrez cette liaison marcher à travers les blog.jerrynixon.com/2012/10/xaml-binding-basics-101.html et de se concentrer sur INotifyPropertyChanged.
Merci, je pensais simplement qu'il est intégré et facile fonctionnalité
OriginalL'auteur imslavko | 2012-12-05
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour mettre en œuvre une certaine forme de notification de changement dans l'ordre pour votre case à cocher pour être "conscient" de toute modification apportée à la propriété. Le meilleur pari est d'utiliser l'un des nombreux frameworks MVVM là-bas, si non, mettre en œuvre
INotifyPropertyChanged
dans votre ViewModel.Aussi, généralement dans WPF, nous ne fixons pas le DataContext de chacun des contrôles, mais de définir le DataContext de la Fenêtre ou de Contrôle de l'Utilisateur à un ViewModel...
Voici un exemple d'une propriété avec notification de changement à travers l'un des frameworks MVVM:
Comme vous pouvez le voir une simple auto-mise en œuvre de la propriété ne peut pas être utilisé pour la liaison de données dans WPF...
Je vous conseille d'aller à travers La Liaison De Données Vue D'Ensemble plus sur MSDN...
Ce n'est pas du tout compliquée à mettre le DataContext de votre Fenêtre ou de Contrôle de l'Utilisateur à un ViewModel de la classe et de la classe de définir une propriété comme illustré ci-dessus. Si vous préférez ne pas travailler avec un framework MVVM, c'est easisest pour mettre en œuvre l'interface INotifyPropertyChanged sur cette classe, dans l'ordre de votre contrôle pour être informé de toute modification apportée à la propriété. C'est vraiment pas beaucoup de code, après tout...
OriginalL'auteur Dean Kuga
OriginalL'auteur bluepoisondartfrog
Vous ne pouvez pas se lier à des propriétés statiques comme des propriétés statiques ne peuvent pas augmenter l'événement PropertyChanged. Vous aurez, bien sûr, besoin de INotifyPropertyChanged. Mais ce n'est pas pertinente avec des propriétés statiques. Vous ne peut tout simplement pas se lier à des propriétés statiques. (Vous pouvez en WPF et Silverlight)
OriginalL'auteur Jerry Nixon - MSFT
Essayer comme cela, notez que la propriété n'est pas statique, mais le champ de stockage est:
OriginalL'auteur Johan Larsson