Ich stehe vor einem Problem, bei dem eine ComboBox in einem UserControl ihren ausgewählten Wert nicht aktualisiert, wenn im Dropdown-Menü auf ein Element geklickt wird. Interessanterweise wird die Value-Eigenschaft aktualisiert und das PropertyChanged-Ereignis ausgelöst, aber nur, wenn die ComboBox den Fokus hat und das Mausrad gescrollt wird. Dieses Verhalten unterscheidet sich von der Auswahl eines Elements aus der Dropdown-Liste, bei der das ComboBox_SelectionChanged-Ereignis nicht ausgelöst wird, die Value-Eigenschaft nicht aktualisiert wird, das PropertyChanged-Ereignis nicht ausgelöst wird und die Benutzeroberfläche angezeigt wird ändert sich nicht, um das ausgewählte Element widerzuspiegeln.
Codebeispiel
EnumPort.xaml.cs:
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Controls;
namespace NodeVideoEffects.Control
{
public partial class EnumPort : UserControl, IControl
{
int value = 0;
public EnumPort(List items)
{
InitializeComponent();
box.ItemsSource = items;
Value = value;
}
public object? Value
{
get => value;
set
{
this.value = (int?)value ?? 0;
OnPropertyChanged(nameof(Value));
}
}
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Value = box.SelectedIndex;
}
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
EnumPort.xaml:
Problem:
[*]Bei der Auswahl eines Elements aus der Dropdown-Liste wird der Wert< Die Eigenschaft /code> wird nicht aktualisiert.
[*]Das Ereignis ComboBox_SelectionChanged wird nicht ausgelöst.
[*]Die Eigenschaft Value wird aktualisiert , und das PropertyChanged-Ereignis wird ausgelöst, aber nur, wenn das ComboBox ist fokussiert und das Mausrad wird verwendet.
[*]Die UI-Anzeige ändert sich nicht, um das ausgewählte Element aus der Dropdown-Liste widerzuspiegeln.
Der Code für diese ComboBox ist auf GitHub verfügbar: EnumPort.xaml.cs auf GitHub
Hilfeanfrage:
Kann jemand helfen, warum die ComboBox-Auswahl nicht korrekt aktualisiert wird und wie dieses Problem behoben werden kann? Stimmt etwas mit der Art und Weise, wie der Wert festgelegt wird, oder mit dem PropertyChanged-Ereignis nicht?
Ich habe den SelectionChanged-Ereignishandler so eingerichtet, dass er reagiert auf Änderungen und erwartet, dass das angezeigte ausgewählte Element in der Dropdown-Liste aktualisiert wird und das Ereignis entsprechend ausgelöst wird. Allerdings wird das SelectionChanged-Ereignis nicht ausgelöst, das angezeigte Element ändert sich nicht und die Value-Eigenschaft spiegelt nicht den richtigen Index wider, wenn ein Element aus der Dropdown-Liste ausgewählt wird. Könnte das an der Art und Weise liegen, wie die Eigenschaft Value implementiert ist, oder an einem Bindungsproblem, das ich möglicherweise übersehe?
ComboBox-Auswahl wird in UserControl (WPF) nicht ordnungsgemäß aktualisiert – SelectionChanged-Ereignis wird ausgelöst, ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post