2016-04-15 5 views
1

У меня есть combobox, и мне нужна команда в моей модели просмотра для привязки к ее событию ContextMenuOpening. Я пробовал ссылаться на System.Windows.Interactivity и использовать InvokeCommandAction, но команда не вызывает. Кто-нибудь видит, где я ошибаюсь?InvokeCommandAction не вызывает

<ComboBox x:Name="comboBoxAssets" Grid.Column="0" VerticalAlignment="Top" Margin="928,62,0,0" Height="25" 
      ItemsSource="{Binding Source={StaticResource SortedAssets}}" 
      SelectedItem="{Binding Path=Assets, UpdateSourceTrigger=PropertyChanged}" 
      Style="{StaticResource ComboBoxDefault}" HorizontalAlignment="Left" Width="212" > 

    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="ContextMenuOpening">  

      <i:InvokeCommandAction Command="{Binding ContextMenuOpeningCommand, Mode=OneWay}" /> 

     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</ComboBox> 

ViewModel:

public ICommand ContextMenuOpeningCommand 
{ 
    get 
    { 
     if (_contextMenuOpeningCommand == null) 
     { 
      _contextMenuOpeningCommand = new RelayCommand<object>(param => this.ContextMenuOpening(), 
       null); 
     } 

     return _contextMenuOpeningCommand; 
    } 
} 

public void ContextMenuOpening() 
{ 
    System.Windows.MessageBox.Show("test", "test"); 
} 

private ICommand _contextMenuOpeningCommand; 
+1

Вы пробовали другое мероприятие? возможно DropDownOpened, чтобы увидеть, попадает ли команда. Я попробовал, и он работает здесь, с той лишь разницей, что я использовал DelegateCommand, но это не имеет значения. – adminSoftDK

+0

Да! Вот и все. Большое спасибо за Вашу помощь. Если вы добавите это как ответ, я с радостью помету его как таковой. – fyodorfranz

ответ

1

Пожалуйста, попробуйте DropDownOpened, чтобы увидеть ли получает удар команды. Я попробовал, и он работает здесь. Надеюсь, это поможет :)