Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从RoutedEventArgs启用鼠标按钮EventArgs_C#_Wpf_Xaml_Mouseevent - Fatal编程技术网

C# 从RoutedEventArgs启用鼠标按钮EventArgs

C# 从RoutedEventArgs启用鼠标按钮EventArgs,c#,wpf,xaml,mouseevent,C#,Wpf,Xaml,Mouseevent,现在我有代码,用户可以在画布上单击,它会放置一个黄色节点,然后弹出一个窗口询问有关该节点的信息。我试图让用户首先从菜单上的两个选项中选择一个选项,然后他们可以在画布上单击。我似乎无法理解这一点,我相信这很简单。我有一个用于按下的MouseButtonEventArgs方法,但我无法将其与用于单击菜单选项的RoutedeventArgs方法联系起来。有什么建议吗 所以基本上我想知道是否有一种方法可以使MouseButtonEventArgs方法不能使用,除非首先选择RoutedEventArgs方

现在我有代码,用户可以在画布上单击,它会放置一个黄色节点,然后弹出一个窗口询问有关该节点的信息。我试图让用户首先从菜单上的两个选项中选择一个选项,然后他们可以在画布上单击。我似乎无法理解这一点,我相信这很简单。我有一个用于按下的MouseButtonEventArgs方法,但我无法将其与用于单击菜单选项的RoutedeventArgs方法联系起来。有什么建议吗

所以基本上我想知道是否有一种方法可以使MouseButtonEventArgs方法不能使用,除非首先选择RoutedEventArgs方法。也就是说,除非首先选择(单击)菜单选项,否则用户不能在画布上单击(addNode_MouseDown(object sender,MouseButtonEventArgs E)(此处为meunMethod_(object sender,RoutedVentargs E))

下面是我现在添加节点的方法:

private void addNode_MouseDown(object sender, MouseButtonEventArgs e)
    {
        Point currentPoint = new Point();
        if (e.ButtonState == MouseButtonState.Pressed)
            currentPoint = e.GetPosition(this);

        Ellipse ellipse = new Ellipse();

        SolidColorBrush mySolidColorBrush = new SolidColorBrush();
        mySolidColorBrush.Color = Color.FromArgb(255, 255, 255, 0);

        ellipse.Fill = mySolidColorBrush;
        ellipse.Width = 10;
        ellipse.Height = 10;

        Canvas.SetLeft(ellipse, e.GetPosition(canvas1).X);
        Canvas.SetTop(ellipse, e.GetPosition(canvas1).Y);
        canvas1.Children.Add(ellipse);

        InputPopupWindow popup = new InputPopupWindow();
        popup.ShowDialog(); 
    }
XAML:


我创建了两个单独的方法来检查是否使用IsChecked选择了每个选项,并将每个选项订阅到各自的方法

例如:

<MenuItem Header="_Add" >
                <MenuItem Header="_Known Object" x:Name="known_Object"  IsCheckable="False" Click="addKnown_Object" />
然后,实际放置节点的方法首先检查各个选择的.IsChecked是否为真


如果有更简单的方法,请让我知道!

试着弄清楚你的问题与更多人的关系,而不仅仅是你。如果不是,请删除它。好的,我编辑了它。
<MenuItem Header="_Add" >
                <MenuItem Header="_Known Object" x:Name="known_Object"  IsCheckable="False" Click="addKnown_Object" />
private void addKnown_Object(object sender, RoutedEventArgs e)
    {
        known_Object.IsChecked = true;
    }