Ich habe WPF ComboBox in einer Datenvorlage (eine Menge von Comboboxen in Listbox) und ich möchte Enter-Taste behandeln. Es wäre einfach, wenn es z.B. eine Schaltfläche - Ich würde Command + Relative Binding Path usw. verwenden. Leider habe ich keine Ahnung, wie die Handle-Taste mit einem Command drückt oder wie man einen Event-Handler aus der Template setzt. Irgendwelche Vorschläge?Event-Handler in DataTemplate
9
A
Antwort
4
Ich habe mein Problem gelöst, indem ich einen gewöhnlichen Event-Handler benutze, wo ich durch den visuellen Baum gehe, den entsprechenden Knopf finde und den Befehl anrufe. Wenn jemand anderes das gleiche Problem hat, bitte posten Sie einen Kommentar und ich werde weitere Details zur Umsetzung bereitstellen.
UPD
Hier ist meine Lösung:
ich die visuelle Struktur für eine Schaltfläche zu suchen und als mit der Taste zugeordnet Befehl auszuführen.
View.xaml:
<ComboBox KeyDown="ComboBox_KeyDown"/>
<Button Command="{Binding AddResourceCommand}"/>
View.xaml.cs:
private void ComboBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
var parent = VisualTreeHelper.GetParent((DependencyObject)sender);
int childrenCount = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < childrenCount; i++)
{
var child = VisualTreeHelper.GetChild(parent, i) as Button;
if (null != child)
{
child.Command.Execute(null);
}
}
}
}
10
Sie die Eventsetter im Stil verwenden können Sie die Vorlage mit setzen:
<Style TargetType="{x:Type ListBoxItem}">
<EventSetter Event="MouseWheel" Handler="GroupListBox_MouseWheel" />
<Setter Property="Template" ... />
</Style>
0
Dieser Artikel hat eine Möglichkeit, alle Event
zu Command
http://nerobrain.blogspot.nl/2012/01/wpf-events-to-command.html