0

私の wpf アプリでは、シングル クリックでボタンが機能しません。ListBox アイテムの dataTemplate を変更するための [編集] ボタンがあります。ただし、編集するにはボタンを 2 回クリックする必要があります。右クリック イベントでも、2 回クリックする必要があります。ダブルクリックイベントは正常に機能します。なぜこれが起こるのですか?どこに問題があるのでしょうか?

右クリック イベントと [編集] ボタンの C# コード:

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";
            }
        }

    }
4

1 に答える 1

4

Try handling the PreviewMouseDown or PreviewMouseLeftButtonDown events instead. Sometimes the bubbling Routed Events get internally used by controls. For more information, please view the UIElement.PreviewKeyDown Event and UIElement.PreviewMouseDown Event pages at MSDN.

于 2013-08-22T12:49:40.133 に答える