Нажатие кнопки не распознается на холсте - PullRequest
0 голосов
/ 23 августа 2011

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

 private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {

         Button r = e.Source as Button;
         if (r != null)
            MessageBox.Show(r.ToString());

        Point mousePoint = Mouse.GetPosition(mainCanvas);
        Button button1 = new Button();


        button1.Template = (ControlTemplate)this.FindResource("nodeTemplate");
        Canvas.SetTop(button1, mousePoint.Y);
        Canvas.SetLeft(button1, mousePoint.X);
        mainCanvas.Children.Add(button1);


    }
}

<Window.Resources>
    <ControlTemplate x:Key="nodeTemplate" TargetType="Button">
        <Grid>
            <Ellipse x:Name="outerCircle" Fill="Red" Height="50" Width="50"/>
            <Ellipse x:Name="innerCircle" Fill="Green" RenderTransformOrigin=".5,.5">
                <Ellipse.RenderTransform>
                    <ScaleTransform ScaleX=".9" ScaleY=".9"/>
                </Ellipse.RenderTransform>    
            </Ellipse> 
        </Grid>            

    </ControlTemplate>
</Window.Resources>

<DockPanel>
    <Canvas x:Name="mainCanvas" Background="Transparent" MouseLeftButtonDown="Canvas_MouseLeftButtonDown">

    </Canvas>
</DockPanel>

1 Ответ

1 голос
/ 23 августа 2011

MouseLeftButtonDown помечен как обработанный кнопкой, событие не достигнет холста, вместо этого используйте PreviewMouseLeftButtonDown (так как они используют разные стратегии маршрутизации это событие не может быть перехвачено кнопкой, поскольку сначала он поднимается на холсте). В качестве альтернативы вы можете прикрепить событие ButtonBase.Click к холсту, это, конечно, только регистрирует нажатия кнопок.

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