2013-08-22 2 views
0

В моем приложении wpf мои кнопки не работают на один клик. У меня есть кнопка «Изменить» для изменения таблицы данных элементов ListBox. Но мне нужно нажать кнопку два раза для редактирования. также для щелчка правой кнопкой мыши, мне нужно дважды щелкнуть. Двойной щелчок события отлично работает. Почему это происходит? Где может быть проблема?Кнопки не работают над одним кликом Wpf

C# код правой кнопкой мыши и события кнопку Edit:

private void listBox1_MouseRightClick(object sender, MouseButtonEventArgs e) 
    { 
     Harvest_TimeSheetEntry entryToDelete = (Harvest_TimeSheetEntry)listBox1.SelectedItem; 

     if(entryToDelete!=null) 
     { 
      MessageBoxResult Result = System.Windows.MessageBox.Show("Are you sure?", "Delete Confirmation", System.Windows.MessageBoxButton.YesNo); 

      if (Result == MessageBoxResult.Yes) 
      { 
       Globals._globalController.harvestManager.deleteHarvestEntry(entryToDelete); 
       listBox1.Items.Remove(listBox1.SelectedItem); 
      } 
      else 
      { 
       System.Windows.MessageBox.Show("Delete operation Terminated"); 
      } 
     } 
    } 

    private void EditButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (listBox1.ItemTemplate == (DataTemplate)this.FindResource("DefaultDataTemplate")) 
     { 
      listBox1.ItemTemplate = (DataTemplate)this.FindResource("EditableDataTemplate"); 
      EditButton.Content = "Done Editing"; 
     } 
     else 
     { 
      foreach (Harvest_TimeSheetEntry item in listBox1.Items) 
      { 
       if (!item.isSynced) 
       { 
        ValidateEntry(item); 
        Globals._globalController.harvestManager.updateHarvestEntry(item); 
        System.Windows.MessageBox.Show("Entry Updated"); 
       } 
       listBox1.ItemTemplate = (DataTemplate)this.FindResource("DefaultDataTemplate"); 
       EditButton.Content = "Edit"; 
      } 
     } 

    } 
+0

Возможно, это связано с шаблоном ListBoxItem, но его невозможно предсказать без каких-либо подробностей. Каждый элемент списка элементов реагирует на клики, чтобы изменить состояние выбора, так что это может быть одной из причин. Попробуйте взглянуть на структуру элементов управления с помощью чего-то вроде Snoop или WPF Inspector, чтобы получить хорошее представление о том, что происходит. Вы можете в значительной степени изменить свой вопрос, чтобы удалить код, поскольку это не связано с фактическим вопросом и только добавляет шум ... –

+0

Покажите нам код –

+0

@MicrosoftDN Как вы уже сказали, я добавил код. Но, как сказал Алекс Пейн, я также думаю, что код не связан с реальным вопросом. – user2622971

ответ

3

Попробуйте обработки с PreviewMouseDown или PreviewMouseLeftButtonDown события вместо этого. Иногда пузырьки Routed Events внутренне используются элементами управления. Для получения дополнительной информации просмотрите страницы UIElement.PreviewKeyDown Event и UIElement.PreviewMouseDown Event в MSDN.

Смежные вопросы