У меня есть следующий фрагмент кода в качестве .xaml файла:Проблемы Переплет MouseDoubleClick с помощью MV-MV Design Pattern
<TreeView MouseDoubleClick="TreeView_MouseDoubleClick" ItemsSource="{Binding MyList}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
Как вы можете видеть, когда вы «MouseDoubleClick» на элемент в TreeView он будет выполнить код в код ... а именно ...
private void TreeView_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
try
{
MessageBox.Show(((TreeViewWithViewModelDemo.LoadOnDemand.HtmlFileViewModel)(((System.Windows.Controls.TreeView)(sender)).SelectedValue)).HtmlFileName);
}
catch
{
}
}
Я пытаюсь следовать шаблон Model-View-ViewModel Дизайн и хотел бы перейти к осуществлению этого мероприятия MouseDoubleClick от View и в ViewModel.
Я понимаю, что если бы я использовал команду, я бы использовал {Binding Command = "Select"} (или что-то подобное, которое реализует интерфейс ICommand), но я не могу найти синтаксис для этой конкретной проблемы, так как это не командную кнопку.
Может кто-нибудь помочь мне?
Благодаря
Есть ли способ сделать через {Binding} на Xaml? –
Да. В ссылочной записи stackoverflow есть ссылки. Использование жестов: http://www.thejoyofcode.com/Invoking_a_Command_on_a_Double_Click_or_other_Mouse_Gesture.aspx Использование шаблона ramora: http://blog.lexique-du.com/index.php?post/2010/02/17/Use- AttachedProperties-to-add-behaviors-to-components –
Любой способ получить жесты для использования {Binding}? Я попробовал следующее, и он пожаловался ... –