ComboBox-Auswahl wird in UserControl (WPF) nicht ordnungsgemäß aktualisiert – SelectionChanged-Ereignis wird ausgelöst,

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: ComboBox-Auswahl wird in UserControl (WPF) nicht ordnungsgemäß aktualisiert – SelectionChanged-Ereignis wird ausgelöst,

by Guest » 20 Dec 2024, 14:01

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. Das ComboBox_SelectionChanged-Ereignis wird ausgelöst, aber die Value-Eigenschaft spiegelt nicht das ausgewählte Element wider. 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.
< hr />
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< /code>-Eigenschaft wird nicht aktualisiert.
  • Das SelectionChanged-Ereignis wird wie erwartet ausgelöst, aber Value spiegelt nicht den ausgewählten Index wider.
  • Die Value-Eigenschaft wird aktualisiert und das PropertyChanged-Ereignis Wird ausgelöst, aber nur, wenn die ComboBox fokussiert ist und das Mausrad verwendet wird.
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 kann dieses Problem gelöst werden? 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 ändert sich weder das angezeigte Element noch spiegelt die Value-Eigenschaft den korrekten 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?

Top