Binding an Textbox aus ListView wenn diese doppelklickt wurde


#1
Hi zusammen,

ich brauche einen Rat von euch.

Ich habe hier ein ListView mit zwei Spalten.
Wird mit Inhalten aus der Datenbank gefüllt.

Code:
<ListView
        Style="{StaticResource dbListView}"
	Name="list"
	DockPanel.Dock="Top"
	MouseDoubleClick="list_MouseDoubleClick">
		<ListView.View>
			<GridView>
				<GridViewColumn
					DisplayMemberBinding="{Binding Path=OVID}"
					Header="ID"
					Width="0" />
				<GridViewColumn
					DisplayMemberBinding="{Binding Path=OV}"
					Header="Ortsverein"
					Width="Auto" />
			</GridView>
		</ListView.View>
</ListView>
und dann gibt es noch eine TextBox

Code:
<TextBox
	Style="{StaticResource TextBox}"
	Name="txtOV"
	DockPanel.Dock="Top"
	HorizontalAlignment="Stretch"></TextBox>
In diese TextBox möchte ich eine/n Wert/Spalte aus der selektierten ListView-Zeile binden.

Wenn ich in der TextBox folgendes ergänze:

Code:
Text="{Binding ElementName=list, Path=SelectedItem.OV}"
dann wird beim einfachen Klick auf eine ListView Zeile der Inhalt der Spalt OV in der TextBox angezeigt. Soweit so gut.

Gibt es aber eine Möglichkeit das Binding erst beim Doppelklick zu "feuern"?
Per Code habe ich das hinbekommen. Gibt es aber eine XAML Lösung?

Danke euch für Tipps und Anregungen!

Gruß Marc
 

Shakie

Erfahrenes Mitglied
#2
Du könntest einen EventTrigger verwenden. Hier und hier ist jeweils ein Beispiel. Die höchst bewertete Antwort der StackOverflow-Seite empfiehlt aber Code-Behind.
Was mir sonst noch einfällt: du erstellst ein neues Control, welches von ListView erbt. Du überschreibst die OnMouseDoubleClick-Methode und aktualisierst darin den Wert einer (Dependency-)Property (und nennst sie z.B. DoubleClickSelectedItem). Die Text-Eigenschaft der TextBox bindest du dann an DoubleClickSelectedItem.
 
#3
Hi Shakie,

danke für die Tipps.
Aber ich dachte mir schon fast, dass Code-Behind unumgänglich sein wird. Zumal die Anforderung an den Doppelklick in meinem Fall höher sind, als nur Daten anzuzeigen.

Ich werde es dennoch ausprobieren in einem einfachen Beispiel.

Gruß Marc
 

Neue Beiträge