2016-04-11 8 views
0

Ich habe folgendes ListBox:programmatisch binden Schaltfläche zu verdoppeln Befehl klicken wpf

<ListBox x:Name="SequencesFilesListBox" ItemsSource="{Binding SequencesFiles, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Foreground="DarkBlue" BorderBrush="Transparent" /> 

Die SequencesFiles definiert als ItemsSource ein ObservableCollection<Button> ist.

Ich füge manuell neue Buttons zu den Sammlungen der folgenden Funktion:

private void AddSequenceToPlaylist(string currentSequence) 
{ 
    if (SequencesFiles.Any(currentFile => currentFile.ToolTip == currentSequence)) return; 

    var newSequence = new Button 
    { 
     ToolTip = currentSequence, 
     Background = Brushes.Transparent, 
     BorderThickness = new Thickness(0), 
     HorizontalAlignment = HorizontalAlignment.Stretch, 
     HorizontalContentAlignment = HorizontalAlignment.Stretch, 
     Content = Path.GetFileName(currentSequence), 
     Command = PlaylistLoadCommand, 
     CommandParameter = currentSequence, 
    }; 
    SequencesFiles.Add(newSequence); 
} 

Ist es möglich, die Command (PlaylistLoadCommand) auf Doppelklick und nicht auf Klick anrufen?

+0

Feuer * ich neue Buttons in die Sammlungen manuell hinzufügen bin ... * Nun, es ist Ihr Problem. Sie können Ihre Ziele wahrscheinlich einfacher erreichen. Vielleicht möchten Sie überprüfen, * warum * Sie dies tun, und vielleicht nach einer besseren, mehr MVVM/WPF-Ish Weg zur Erreichung Ihrer Ziele fragen. In einer anderen Frage. – Will

+0

Können Sie meine Antwort (Badges und Zeug) abstimmen? –

Antwort

3

können Sie set InputBinding auf Ihre Button Ihren Befehl mit Doppelklick

var newSequence = new Button 
{ 
    ToolTip = currentSequence, 
    Background = Brushes.Transparent, 
    BorderThickness = new Thickness(0), 
    HorizontalAlignment = HorizontalAlignment.Stretch, 
    HorizontalContentAlignment = HorizontalAlignment.Stretch, 
    Content = Path.GetFileName(currentSequence), 
    CommandParameter = currentSequence, 
}; 

var mouseBinding = new MouseBinding(); 
mouseBinding.Gesture = new MouseGesture(MouseAction.LeftDoubleClick); 
mouseBinding.Command = PlaylistLoadCommand; 
newSequence.InputBindings.Add(mouseBinding);