Почему я не могу переместить путь в WPF? - PullRequest
1 голос
/ 09 октября 2019

Я пытался переместить (удерживая левую кнопку мыши и перетащить) a UIElement на Canvas в Wpf.

Это сработало для Rectangle, но когда я попытался сделать то же самое с Path форма не двигается.

Вот макет , всего 2 элемента внутри холста:

<Canvas Background='Beige'
            Name='canvas'>
        <Rectangle Width='50'
                   Height='50'
                   Fill='LightPink'
                   Canvas.Left='350'
                   Canvas.Top='175'
                   MouseMove='OnMouseMove'
                   Name='square' />

        <Path Fill="Cyan"
              Stroke="Black"
              MouseMove='OnMouseMove'>
            <Path.Data>
                <GeometryGroup>
                    <EllipseGeometry Center="20, 40"
                                     RadiusX="20"
                                     RadiusY="40" />
                    <EllipseGeometry Center="20, 40"
                                     RadiusX="10"
                                     RadiusY="30" />
                </GeometryGroup>
            </Path.Data>
        </Path>
    </Canvas>

А вот код позади :

private void OnMouseMove(object sender, MouseEventArgs e)
        {
            if (e.Source is Shape shape)
            {
                if (e.LeftButton == MouseButtonState.Pressed)
                {
                    Point p = e.GetPosition(canvas);
                    Canvas.SetLeft(shape, p.X - shape.Width / 2);
                    Canvas.SetTop(shape, p.Y - shape.Height / 2);
                }
            }
        }

Path представляет собой Shape, как Rectangle, и OnMouseMove выполняется для обоих элементов управления.

Почему только Rectangle движется, а Path - нет?

1 Ответ

3 голосов
/ 09 октября 2019

Вместо этого используйте ActualWidth и ActualHeight. Ширина и высота, если вы проверите, NaN.

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