Кнопка WPF частично не работает после нескольких нажатий быстро - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть кнопка, которая при нажатии должна изменить режим карты bing и изменить изображение на кнопке:

<Button x:Name="ModeButton" Grid.Column="0" Background="#00000000" BorderThickness="0" Click="ChangeMapMode" MouseDoubleClick="ChangeMapMode">
    <Image Source="{Binding MapModePicName}" Width="30" Height="30" />
</Button>

элемент карты:

<m:Map Mode="{Binding MapMode}/>"

событие щелчка:

        private void ChangeMapMode(object sender, RoutedEventArgs e)
        {
            if (MapMode is RoadMode)
            {
                MapMode = new AerialMode();
            }
            else
                MapMode = new RoadMode();
        }

свойства:

        public MapMode MapMode
        {
            get
            {
                return mode;
            }
            set
            {
                mode = value;
                OnPropertyChanged(nameof(MapMode));
                OnPropertyChanged(nameof(MapModePicName));
            }
        }
        public string MapModePicName
        {
            get
            {
                return MapMode is RoadMode ? "/Images/RoadsMap.png" : "/Images/AerialMap.png";
            }
        }

Режим карты привязан к MapMode. когда я нажимаю на кнопку, все работает, но когда я нажимаю на нее дважды или более, быстро она действует странно. После этого режим карты больше не меняется, когда я нажимаю, но изображение на кнопке все еще меняется, как и должно. Это также очень странно, потому что изображение на кнопке соответствует привязке свойства к режиму. Я пытался обработать событие двойного щелчка, и оно работало для случая двойного щелчка, но все равно не получалось при 3 или более быстрых щелчках. Я также попытался отключить кнопку во время обработки события, чтобы проверить, происходит ли это, потому что кнопка нажата до окончания обработки события, но она все еще не работает. Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...