Dans WPF, j'ai une collection de bool? valeurs et je veux lier chacun d'entre eux à une case à cocher séparée par programme. Je souhaite que les liaisons soient TwoWay afin que la modification de la valeur de l'élément individuel dans la collection dans le code mette à jour la case à cocher et vice versa.Lier un contrôle à une valeur unique dans une collection/tableau dans WPF
J'ai passé des heures à essayer de comprendre comment faire cela et je suis complètement coincé. Avec le code suivant, la case à cocher n'obtient la bonne valeur que lorsque la fenêtre est chargée et c'est tout. La modification de la case à cocher ne met même pas à jour la valeur dans la collection. (MISE À JOUR: cela semble être un bug dans .NET4 que la collection ne soit mis à jour dans un projet identique .NET3.5 MISE À JOUR:. Microsoft a confirmé le bug et qu'il sera corrigé dans la version .NET4.)
Merci beaucoup d'avance pour votre aide!
C#:
namespace MyNamespace
{
public partial class MyWindow : Window, INotifyPropertyChanged
{
public MyWindow()
{
InitializeComponent();
DataContext = this;
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public List<bool?> myCollection = new List<bool?>
{ true, false, true, false, true, false };
public List<bool?> MyCollection
{
get { return myCollection; }
set { myCollection = value; }
}
}
}
XAML:
<CheckBox IsChecked="{Binding Path=MyCollection[0], Mode=TwoWay}">
Je travaille toujours sur les 3 premières réponses, mais je suis déconcerté par la raison pour laquelle mon code semble fonctionner pour les deux premiers répondants (au moins dans la direction CheckBox -> MyCollection). Pour moi, cela ne se passe tout simplement pas. J'utilise VS2010 Beta 2 et .NET4 dans le cas où c'est pertinent. –
Eh bien, je ne pensais certainement pas que cela serait pertinent: j'ai tout copié dans un projet .NET 3.5 et hop, le CheckBox met à jour la valeur dans MyCollection. Je me demande pourquoi cela ne fonctionne pas dans .NET 4? –
Hmm, si vous avez un code comme celui-ci qui fonctionne dans .NET 3.5 mais le code identique ne fonctionne pas dans .NET 4, ce qui suggère un bug dans .NET 4. Cela pourrait valoir la peine de poster sur Connect. – itowlson