2016-04-11 6 views
0

У меня есть следующие ListBox:кнопку программно связать дважды щелкните команду МОФ

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

SequencesFiles определяется как ItemsSource является ObservableCollection<Button>.

я вручную добавлять новые Buttons в коллекцию с помощью следующей функции:

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); 
} 

Можно ли назвать Command (PlaylistLoadCommand) при двойном щелчке, а не на клике?

+0

* Я вручную добавлять новые кнопки в коллекцию ... * Ну, это ваша проблема. Вероятно, вы можете достичь своих целей более простым способом. Возможно, вы захотите рассмотреть * почему * вы это делаете и, возможно, попросите улучшить, более mvvm/wpf-ish способ достижения ваших целей. В другом вопросе. – Will

+0

Можете ли вы проголосовать за мой ответ (значки и прочее)? –

ответ

3

Вы можете установить InputBinding ваши Button огнь вашей команды по двойному щелчку

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); 
0

Как и в этом вопросе, я бы посоветовал против создания пользовательских элементов управления в вашей ViewModel: how to correctly bind a View control to a ViewModel List (WPF MVVM)

Для двойных переплетов щелчка, к сожалению, все еще не поддерживается в инструментарии WPF увидеть этот вопрос: How to bind a command in WPF to a double click event handler of a control?

 Смежные вопросы

  • Нет связанных вопросов^_^