darked
@darked

WPF ListView обработчик двойного клика не работает, как правильно?

Доброе время суток.

На главной aорме есть ListView, который отображает список записей из ViewModel:
<Window.DataContext>
        <vmMain:VM_Main/>
    </Window.DataContext>

.....

<ListView Grid.Column="0" Name="ProjectsList" ItemsSource="{Binding Path=Projects}"
                      SelectedItem="{Binding SelectedProject , Mode=TwoWay}">
                <ListView.InputBindings>
                    <MouseBinding Command="{Binding Path=OpenProject}" MouseAction="LeftDoubleClick" />
                </ListView.InputBindings>
                <ListView.View>
                    <GridView>
                        <GridView.Columns>
                            <GridViewColumn Header="№ Заказа" DisplayMemberBinding="{Binding Path=Number}"></GridViewColumn>
                            <GridViewColumn Header="КД" Width="170" DisplayMemberBinding="{Binding Path=KD}"></GridViewColumn>
                            <GridViewColumn Header="Наименование" Width="500" DisplayMemberBinding="{Binding Path=Name}"></GridViewColumn>
                            <GridViewColumn Header="Примечания" Width="200" DisplayMemberBinding="{Binding Path=Notes}"></GridViewColumn>
                            <GridViewColumn Header="Срок изготовления" Width="200" DisplayMemberBinding="{Binding Path=ProductionDate}"></GridViewColumn>
                            <GridViewColumn Header="Исполнитель" Width="300" DisplayMemberBinding="{Binding Path=Implementers, ValidatesOnExceptions=False, Converter={StaticResource ImplementerConverter}}"></GridViewColumn>
                        </GridView.Columns>
                    </GridView>
                </ListView.View>
            </ListView>


Вот сама модель:
public class VM_Main : VM_Base
    {
        private VM_Project _selectedProject;

        public VM_Main()
        {
            LoadProjects();
        }

        public ObservableCollection<VM_Project> Projects { get; set; } = new ObservableCollection<VM_Project>();

        public ICommand OpenProject
        {
            get
            {
                return new DelegateCommand(obj =>
                {
                    VM_Project vProject = SelectedProject;

                    ProjectInfoView view = new ProjectInfoView();
                    view.DataContext = vProject;

                    view.ShowDialog();
                });
            }
        }


После заполнения ListView даблкликаю по все области ListView и срабатывает один раз на 50, по некоторым строкам, никак не могу понять в чём проблема. Что не так описал?
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
darked
@darked Автор вопроса
Решил эту задачу, вот решение:
<i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseDoubleClick">
                        <i:InvokeCommandAction Command="{Binding OpenProject, Mode=OneWay}"/>
                    </i:EventTrigger>
 </i:Interaction.Triggers>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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