Изменить размер фигуры в WPF после события - PullRequest
0 голосов
/ 02 июня 2018

Я использую WPF для отображения фигуры на панели Office.Я могу определить размер фигуры при загрузке приложения.Но я хотел бы изменить размер этой формы, если пользователь изменит размер панели, содержащей форму.Моя проблема заключается в том, что поле, определенное в начале, не изменяется после загрузки, поэтому размер сохраняет первоначальное поле.

У меня есть UserControl, содержащий форму WPF и обработчик события изменения размера:

private void UserControlA_Resize(object sender, EventArgs e)
{
        myWPF.SetSizeOfShape(sizeOfPanel); // I collect sizeOfPanel, and it is OK, it is changed when panel is resized
}

xaml из WPF:

<Border Name="myShape"  Background="blue" CornerRadius="8" Margin="10,126,139,199" />

. WPF .cs:

public void SetSizeOfShape(int widthOfPanel)
{
      myShape.Margin = new Thickness(widthOfPanel/3, 100, widthOfPanel/6, 100);

SetSizeOfShape вызывается, когда приложение загружается и размер установлен правильно - но если размер равенизменено, вызывается снова, но не изменяет отображаемое поле.

Знаете ли вы, что не так и как это исправить?

----- РЕДАКТИРОВАТЬ ----- Вероятно, есть проблема с моим обработчиком событий.Действительно, если я поместил событие нажатием кнопки, это сработает, но если я использую событие Resize (или sizeChanged), то это не так: событие вызывается, но не влияет на форму.Ты знаешь как это решить?

1 Ответ

0 голосов
/ 02 июня 2018

Я не вижу события Resize для Border Control .Он может соответствовать своему содержанию.Может быть, расскажете нам подробнее о том, что вы пытаетесь сделать.

public void MyMouseOver()
{
    Ellipse myShape = new Ellipse() { Width = 200, Height = 100, Stroke = Brushes.Yellow, };
    MyCanvas.Children.Add(myShape);
    Canvas.SetTop(myShape,10);
    Canvas.SetLeft(myShape,10);

    myShape.MouseEnter += MyShape_MouseEnter;
    myShape.MouseLeave += MyShape_MouseLeave;
}

private void MyShape_MouseLeave(object sender, MouseEventArgs e)
{
    ((Ellipse)sender).RenderTransform = new ScaleTransform(1, 1);    // return scale to normal
}

private void MyShape_MouseEnter(object sender, MouseEventArgs e)
{
    ((Ellipse)sender).RenderTransform = new ScaleTransform(1.1, 1.1, Width / 2, Height / 2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...