WPF Combobox-Bindung

8

Ich habe zwei Comboboxen und beide haben Bindung mit der gleichen Quelle.

%Vor%

Und wenn ich etwas im ersten ändere, spiegelt es sich auch im zweiten wider. Und ich weiß nicht, wie Sie ihre SelectedItem-Werte mit derselben ItemsSource getrennt halten können.

    
Agzam 16.03.2010, 21:49
quelle

4 Antworten

10

Die Eigenschaft IsSynchronizedWithCurrentItem sollte auf False:

  

true, wenn das SelectedItem immer ist   synchronisiert mit dem aktuellen Element in   die ItemCollection; falsch wenn die   SelectedItem wird nie synchronisiert   mit dem aktuellen Artikel; null wenn der   SelectedItem ist mit dem synchronisiert   aktuelles Element nur, wenn der Selector verwendet   eine CollectionView. Der Standardwert ist   null.

Hier ist ein Beispiel:

%Vor%     
Metro Smurf 16.03.2010, 23:17
quelle
2

Sie müssen nur die IsSynchronizedWithCurrentItem Eigenschaft auf false (standardmäßig ist es null)

    
Thomas Levesque 16.03.2010 22:58
quelle
1

Ich rate (aus dem Namen Ihrer Bindung), dass dies der Grund dafür ist, dass Sie an eine CollectionViewSource binden (die eine Sammlung umschließt). Diese Klasse ist ein Proxy, den WPF verwendet, der (unter anderem) das ausgewählte Element einer Sammlung enthält. Wenn Sie diese Sammlung für zwei Comboboxen freigeben, teilen Sie das ausgewählte Element natürlich auch.

Wenn Sie ItemsSource auf etwas festlegen, das nicht a CollectionViewSource ist, wird das Steuerelement es automatisch in eins umwandeln. Also, mein Vorschlag wäre, direkt an eine Sammlung zu binden, anstatt in CollectionViewSource zu verpacken - oder alternativ zwei CollectionViewSource -Instanzen zu erstellen, eine für jedes ComboBox .

    
Dan Puzey 16.03.2010 23:20
quelle
0

Sie können die SelectedItem-Eigenschaft für jedes Kombinationsfeld separat separat binden.

d. h.

%Vor%

Auf diese Weise wird jedes Element an einem anderen Ort gespeichert.

    
Chris 16.03.2010 22:39
quelle

Tags und Links