Как связать команду в WPF к обработчику событий двойного щелчка управления?

Я должен связать событие двойного щелчка textblock (или потенциально изображение также - так или иначе, это - пользовательский элемент управления), к команде в моем ViewModel.

TextBlock. InputBindings, кажется, не связывает правильно с моими командами, какой-либо справкой?

62
задан 18 August 2009 в 16:30

4 ответа

10
ответ дан 31 October 2019 в 13:03
<Button>
<Button.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="YourCommand" />
</Button.InputBindings>
</Button>

http://thejoyofcode.com/Invoking_a_Command_on_a_Double_Click_or_other_Mouse_Gesture.aspx

244
ответ дан 31 October 2019 в 13:03

это просто, давайте использовать путь MVVM: я использую здесь Свет MVVM, который легко изучить и сильный.

1.put следующие строки xmlns объявления:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"  
xmlns:GalaSoft_MvvmLight_Command="clr-namespace:GalaSoft.MvvmLight.Command;
                                   assembly=GalaSoft.MvvmLight.Extras.WPF4"

2.define Ваш textblock точно так же, как это:

<textBlock text="Text with event">
   <i:Interaction.Triggers>
      <i:EventTrigger EventName="MouseDoubleClick">
         <GalaSoft_MvvmLight_Command:EventToCommand 
                             Command="{Binding Edit_Command}"/>
      </i:EventTrigger>
   </i:Interaction.Triggers>
</textBlock>

3.then пишут Ваш код команды в Вашем viewmodel!!!

ViewModel1.cs

Public RelayCommand Edit_Command
{
   get;
   private set;
}

Public ViewModel1()
{
   Edit_Command=new RelayCommand(()=>execute_me());
}

public void execute_me()
{
   //write your code here
}

я надеюсь, что работы для Вас, поскольку я использовал его в Реальном приложении

ERP
6
ответ дан 31 October 2019 в 13:03

У меня также была подобная проблема, где я должен был связать Событие mouseDoubleClick listview к команде в моем ViewModel.

простое решение, я подошел, помещает фиктивную кнопку, которая имеет желаемую привязку команды и вызов Выполнить метод команды кнопки в eventhandler События mouseDoubleClick.

.xaml

 <Button Visibility="Collapsed" Name="doubleClickButton" Command="{Binding Path=CommandShowCompanyCards}"></Button>
                <ListView  MouseDoubleClick="ListView_MouseDoubleClick" SelectedItem="{Binding Path=SelectedCompany, UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Margin="0,10,0,0" ItemsSource="{Binding Path=CompanyList, UpdateSourceTrigger=PropertyChanged}" Grid.Row="1" HorizontalContentAlignment="Stretch" >

codebehind

     private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
            {
                doubleClickButton.Command.Execute(null);
            }

Это не просто, но это действительно просто, и это работает.

1
ответ дан 31 October 2019 в 13:03

Другие вопросы по тегам:

Похожие вопросы: