Ich habe zwei Combobox binden an die gleiche ObservableCollection proprety, ich würde gerne wissen, ob es möglich ist, ein Element in der Combox zu deaktivieren, wenn es bereits in einem von ihnen ausgewählt ist? in wpf. thxWie kann ich ein Combox-Objekt deaktivieren, wenn es bereits in einer anderen Combobox in xaml C# ausgewählt wurde?
Antwort
Sie können die IsSelected-Eigenschaft des ComboBox-Elements an einen Bool-Wert binden, der einen ausgewählten Status in Ihrer Klasse angibt.
<ComboBox ItemsSource="{Binding Items}">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="IsSelected" Value="{Binding SelectedA, Mode=OneWayToSource}"></Setter>
<Setter Property="IsEnabled" Value="{Binding SelectedB}"></Setter>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
<ComboBox ItemsSource="{Binding Items}">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="IsSelected" Value="{Binding SelectedB, Mode=OneWayToSource}"></Setter>
<Setter Property="IsEnabled" Value="{Binding SelectedA}"></Setter>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
Erstellen Sie eine Klasse, die
public class MyClass : INotifyPropertyChanged
{
private bool selectedA;
public bool SelectedA
{
get { return !selectedA; }
set { selectedA = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("SelectedA")); }
}
private bool selectedB;
public bool SelectedB
{
get { return !selectedB; }
set { selectedB = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("SelectedB")); }
}
public event PropertyChangedEventHandler PropertyChanged;
}
ein paar bools
aussetzt (Im Beispiel bin ich einfach jede ausgewählte bool in dem Getter Umkehr, aber in Wirklichkeit die Bool Spiegeln wahrscheinlich am besten durchgeführt werden würde mit ein Konverter)Sie können entweder:
- Stellen Sie die
IsEnabled
Eigenschaft des ComboBoxItem so etwas wie dies mit: Disallow/Block selection of disabled combobox item in wpf (Danke Kamil für den Link) - es anders aussehen (aber immer noch wählbar);
- Aktualisieren Sie die zweite Liste, so dass es die ausgewählte Option entfernt, wenn die Auswahl der ersten Änderungen; oder
- Nachträgliche Validierung anwenden (z. B. ein Fehlersymbol/eine Fehlermeldung anzeigen oder die Schaltfläche "Senden" deaktivieren, wenn die beiden Optionen identisch sind).
Ihre Wahl hängt nur von der Erfahrung ab, die Sie erreichen möchten.
Was ist mit IsEnabled-Eigenschaft eines ComboboxItem? –
Hatte das vergessen. Danke Kamil! In jedem Fall ist es wichtig, die gewünschte Erfahrung zu beschreiben, um eine gute Lösung zu finden. – robertos
Ich stimme absolut zu :) –
- 1. MVVM, WPF: So legen Sie ein Objekt fest, wie es in einer Combobox ausgewählt wurde
- 2. Elemente in einer Combobox deaktivieren
- 3. Wie fülle ich eine ComboBox in XAML
- 4. Wie binde ich eine Combobox an das in einer anderen Combobox ausgewählte Objekt?
- 5. Zählen Sie, wie oft ein ComboBox-Element in C++ Builder ausgewählt wurde
- 6. Wie wpf Combobox in Xaml
- 7. Wie kann ich wissen, wenn ein Wert in einer ComboBox "wiedergewählt" wird?
- 8. WP8.1 XAML - Wie erhalte ich ein GridView-Objekt, das angezeigt wird, wenn es ausgewählt ist?
- 9. Wie identifiziere ich ein Bild, das von UIImagePicker ausgewählt wurde?
- 10. Wie kann ich ein WPF-Kombinationsfeld in XAML mit allen Elementen aus einer bestimmten Aufzählung füllen?
- 11. Was wurde in einer columns.picklist ausgewählt?
- 12. In Swing funktioniert die Eingabetaste nicht, wenn ein Element aus einer Combobox ausgewählt wird
- 13. Wie kann ich eine xaml Seite zu einer anderen navigieren?
- 14. Git: Wie kann man wissen, ob ein Commit ausgewählt wurde?
- 15. Wie kann ich ein dynamisches Zeichenfolgenarray löschen, das in C++ in einem anderen Bereich deklariert wurde?
- 16. Wenn ich Speicher in einem Thread in C++ zuweisen kann, kann ich es in einem anderen
- 17. XAML - MergedDictionaries werfen XmlParseException "Element wurde bereits hinzugefügt". Warum?
- 18. Ändern von Text einer Combobox in einer anderen Registerkarte
- 19. Wie Sie eine Combobox in Tkinter deaktivieren?
- 20. Wie füge ich ein zusätzliches Element in ComboBox mit C#
- 21. Wie in einer WPF-ComboBox
- 22. Wie kann ich ein WPF-Image deaktivieren?
- 23. WPF: Deaktivieren Sie Rückgängig in einer bearbeitbaren ComboBox
- 24. Deaktivierte Optionen bereits in einem anderen Mehrfachauswahlfeld ausgewählt
- 25. ComboBox, wie zu deaktivieren, um in C schreiben
- 26. Wie kann ich PropertyGrid-Elementwerte aktualisieren, wenn ein anderes Element in WinForm C# geändert wurde?
- 27. Suchen, was in der Combobox-Liste mit der rechten Maustaste ausgewählt wurde
- 28. Mausrad in Combobox deaktivieren VB.NET
- 29. Einstellen der ItemsSource einer Combobox von einem INDEXER in XAML?
- 30. Wie setze ich Text in ein TextField, wenn ich ein Item aus einer Combobox JavaFX auswähle?
Nun, was hast du probiert? Wir müssen etwas Code sehen, um Ihnen helfen zu können. –
Bitte geben Sie uns einen Code der aktuellen Situation und erklären Sie aus dem Code, welche Teile nicht wie erwartet funktionieren. –
Mögliches Duplikat von [Disallow/Block Auswahl des deaktivierten Combobox-Elements in WPF] (http://stackoverflow.com/questions/20889963/disallow-block-selection-of-disabled-combobox-item-in-wpf) –