C# WPF ListBox Case de Liaison IsChecked à un Champ et IsSelected?
Je suis en train de lier une Case à cocher pour un domaine, mais aussi de déclencher la case du IsSelected.
Voici la liste de configuration qui est de travailler avec la Liaison de données
<ListBox x:Name="lstExclude" Grid.Column="2" SelectionMode="Single" >
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Text}"
IsChecked="{Binding Checked ,Mode=TwoWay}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Et voici le code associé à la liaison
public MainWindow()
{
InitializeComponent();
List<CheckBoxListItem> items1 = new List<CheckBoxListItem>();
items1.Add(new CheckBoxListItem(true, “home”));
items1.Add(new CheckBoxListItem(false, “work”));
items1.Add(new CheckBoxListItem(true, “cell”));
lstExclude.ItemsSource = items1;
}
public class CheckBoxListItem
{
public bool Checked { get; set; }
public string Text { get; set; }
public CheckBoxListItem(bool ch, string text)
{
Checked = ch;
Text = text;
}
}
Cette lie la case cochée valeur correctement, mais si je clique sur la case (cochée ou non cochée), je le veux pour sélectionner l'élément, donc j'ai essayé de le faire de cette façon
<ListBox x:Name="lstExclude" Grid.Column="2" SelectionMode="Single" >
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Text}"
IsChecked="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=IsSelected}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Donc cela me donne les résultats de cliquer sur la case à cocher (cochez ou décochez) et sélectionnez l'élément. Le problème est maintenant l'objet de champ n'est pas lié quand j'ai ajouter les éléments.
Comment pouvez-vous obtenir la case pour être à la fois lié à la Coché le terrain ET ont encore la IsSelected travail?
OriginalL'auteur user3573191 | 2014-04-25
Vous devez vous connecter pour publier un commentaire.
Serait-il travailler pour lier les deux propriétés de l'INTERFACE utilisateur de la
Checked
modèle d'objet de propriété?En fait, il y a un problème (et c'est à cause de mon libellé de ma question) - je veux de l'élément sélectionné chaque fois que vous cliquez sur la case à cocher (peu importe si elle est cochée ou non) - Désolé. Des idées? Merci.
Dans le passé, j'ai utilisé un
DataTrigger
qui définitIsSelected="True"
chaque fois queIsKeyboardFocusWithin
est égale à true. La syntaxe ressemble à quelque chose comme ceci. C'est ce que tu veux dire?J'ai le même problème et a tenté à l'aide d'un DataTrigger, mais le Setter de la Propriété est résolu que la propriété de ListBoxItem qui n'a pas de propriété IsChecked
Le
.Checked
propriété du modèle de données est lié à la fois à l'ListBoxItem.IsSelected
etCheckBox.IsChecked
propriétés. Si vous essayez d'écrire un déclencheur pourListBoxItem
, utilisez leIsSelected
de la propriété. Et si cela ne fonctionne toujours pas, poser une nouvelle question avec les détails de votre code et n'hésitez pas à me laisser un lien et je vais prendre un coup d'oeil 🙂OriginalL'auteur Rachel
Ok, j'ai répondu à ma propre question (et il y aurait de mieux à faire alors n'hésitez pas à ajouter) j'ai ajouté un événement Click à la case comme
et ensuite ajouté ce code pour l'Événement Click
Maintenant l'élément est sélectionné lorsque vous cliquez sur la case (cochée ou non cochée) et de l'article est disponible à l' 'lstExclude.SelectedIndex méthode
J'espère que cela aide quelqu'un à venir avec le même problème.
OriginalL'auteur user3573191
vous pouvez utiliser un
MultiBinding
avecMultiConverter
et de créer un YourMultiBindConverter que de mettre en œuvre IMultiValueConverter
En fait, cela m'a beaucoup aidée car je n'ai pas besoin de se lier à une valeur spécifique dans mon modèle, mais une liste de valeurs. Mon client voulait la zone de liste pour afficher les contrôles ainsi que les faits saillants, et cela m'a aidé à y arriver. Merci.
OriginalL'auteur erradi mourad
OriginalL'auteur Ramji