ListViewItem EventTrigger не запускает WPF - PullRequest
0 голосов
/ 03 августа 2020

У меня есть ListView с определенным в xaml ListViewItems. Я пытаюсь привязать команду к LisdtViewItem в событии щелчка PreviewMouseLeftButtonDown через Microsoft.Xaml.Behaviors.Wpf, но это не работает.

Код Xaml:

                    <ListView x:Name="SideMenu"
                              ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                              BorderThickness="0 0 1 0"
                              ItemContainerStyle="{StaticResource MenuItem}">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Vertical" VerticalAlignment="Stretch" ToolTip="{Binding ToolTip}">
                                    <Image Source="{Binding ImageAddress}" Style="{StaticResource MenuIcon}"/>
                                </StackPanel>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                        <ListViewItem IsSelected="True">
                            <Image Source="../Icons/TestPlan.png" Style="{StaticResource MenuIcon}"/>
                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
                                    <i:InvokeCommandAction Command="{Binding TestingCommand}"/>
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                        </ListViewItem>

ViewModelCode:


    public sealed class SideMenuControlViewModel
    {
        public ICommand GetOddsCommand { get; set; }

        public SideMenuControlViewModel()
        {
            GetOddsCommand = new RelayCommand(o => GetOdds());
        }

        public ICommand TestingCommand
        {
            get => new RelayCommand((s) => Test()); 
        }

        private void GetOdds()
        {

        }

        private void Test()
        {
            int a = 5;
            int b = a + a;
        }
    }

Кроме того, я попытался добавить триггер события внутри изображения и границы, но это тоже не помогло ...

1 Ответ

0 голосов
/ 12 августа 2020

Проблема заключалась в том, что я использовал ICommand не из System. Windows .Input и просто скопировал его из учебника ... Я просто изменил наследование класса RelayCommand, и привязка команд начала работать как обычно


    public sealed class RelayCommand : ICommand
    {
        private readonly Action _action;

        public event EventHandler CanExecuteChanged = (sender, e) => { };

        public RelayCommand(Action action)
        {
            _action = action;
        }

        public bool CanExecute(object parameter)
        {
            return true;
        }

        public void Execute(object parameter)
        {
            _action();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...