Silverlight ListBox Checkbox Ausgewählte Element
Ich habe eine Listbox, die eine Checkbox als Teil des Element-Vorlage.
In der klicken Sie auf auch von die Checkbox, die ich will, um sicherzustellen, dass derselbe Punkt der Liste ausgewählt ist.
ListBoxItem lbi = ((ListBoxItem)listLayers.
ContainerFromElement((CheckBox)sender));
lbi.IsSelected = true;
Die wichtigste Frage, die ich habe ist, dass "ContainerFromElement" ist die in silverlight nicht verfügbar.
Jede Hilfe wird sehr geschätzt.
Bearbeiten
Dies ist der code, den ich bin mit in die click-Ereignis der checkbox in meiner Liste:
MyObject obj = listLayers.SelectedItem as MyObject;
obj.Visible = true;
obj.Value = "50";
Mithilfe der RelativeSource binding auf der Checkboxen zusammen mit diesem code habe ich am Ende mit obj gleich null.
Habe ich eine Liste von Ebenen, die möchte ich an und ausschalten über Checkboxen, ich bin offen für einen anderen Weg...
- wie die checkboxlist in dieser demo? designersilverlight.com/SilverlightSamples/ListBoxCheckBox
Du musst angemeldet sein, um einen Kommentar abzugeben.
In das selectionChanged-event haben Sie "zu Fuß" die visuelle Struktur zu finden, die checkbox. Sie können dies tun, indem Sie mit der VisualTreeHelper
Dieses Beispiel zeigen, was Sie tun müssen, um zu bekommen, um die checkbox.
Unten finden Sie einige andere Lösungen zu diesem problem
Sollten Sie eine RelativeSource binding zwischen dem ListboxItem und die CheckBox.
Die datatemple enthält ein Kontrollkästchen. Ändern Sie es wie folgt Aussehen.
Schafft dies eine Bindung zwischen der IsSelected - Eigenschaft der ListBox und die IsChecked Eigenschaft der CheckBox.
Diese tutorial erklärt, wie man mit einem Beispiel.
Wenn Sie mehr Kontrolle benötigen, sollten Sie einen Blick auf Verhaltensweisen und Trigger. Sie sind ein bisschen komplexer, aber Sie geben Ihnen mehr Kontrolle.
Sparen sich die Mühe und erstellen Sie die Kontrollkästchen, fügen Sie ein StackPanel-Steuerelement im Code-Behind und dann Durchlaufen Sie und schaut nur für diejenigen, der
IsChecked.Value = True
.Hat mich 2 Minuten.
Können Sie auch eine Auflistung, beobachten Sammlung oder hash-set auf dem codebehind und legen Sie eine Methode für das prüfen und entfernen Sie das Häkchen in der checkbox, so dass Sie können hinzufügen oder entfernen Sie die ausgewählten Objekte, es funktionierte für mich(ich habe nicht versucht das stack-panel)...
hier ist, was ich Tat.
zuerst habe ich festgestellt das Element, die ich brauche, um den tag der CheckBox
dann auf der code-behind-ich hab die id, wenn aktiviert oder deaktiviert ist und ich bin sicher, dass das element angezeigt werden, weil die gleichen, die ich verwendet, die auf die Bindung.
sehen, wenn Sie fertig sind, haben Sie bereits im code eine Liste von dem, was geprüft...
Für mich - Dieser code löst den Zweck.