WPF Показать переменную в новом окне

1

Я написал программу, которая отображает цвет и поток глубины сенсора kinect. В изображении глубины пользователь может выбрать две точки, а программа отображает координаты точек. Теперь я хочу улучшить свою программу. Поэтому я добавил новое окно Disatance.xaml. Это окно открывается, когда пользователь проверяет флажок. В этом окне я хочу показать координаты, а не в MainWindow. Поэтому мне нужно передать целочисленные переменные x- и y-Coordinates. Моя проблема в том, что я действительно новичок в С#, и я не знаю, как передавать целые числа из одного окна в другое окно. Я действительно, как кто-то может мне помочь. Основной код выполняется в главном окне. В этом случае я открываю второе окно, нажимая на кнопку. Мой код выглядит так:

    private void CmdDistance_Click(object senderr, RoutedEventArgs e)
    {
            Distance distance = new Distance();
            distance.Show();
    }

Координаты в настоящее время вычисляются и отображаются моей функцией void Mouse_ClickTest:

    private void Mouse_ClickTest(object sender, System.Windows.Input.MouseEventArgs e)
    {
        if (ChkDistance.IsChecked == true)
        {
            System.Windows.Point myMousePosition = e.GetPosition(DepthImage);

            double xpixel = myMousePosition.X;
            double ypixel = myMousePosition.Y;
            int xpos = (int)xpixel;
            int ypos = (int)ypixel;
            if ((xpos > 0 || ypos > 0) && (xpos <= 640 || ypos <= 480))
            {
                int depthWidth = mySensor.DepthStream.FrameWidth;
                int depthIndex = xpos + (ypos * depthWidth);
                if (depthIndex < 307840)
                {
                    SkeletonPoint mySkeletonArray = this.mySkeletonArray[depthIndex];
                    float zpos = mySkeletonArray.Z;
                    zpos = zpos * 1000;
                    int z = (int)zpos;
                    float xp = mySkeletonArray.X;
                    xp = xp * 1000;
                    int x = (int)xp;
                    float yp = mySkeletonArray.Y;
                    yp = yp * 1000;
                    int y = (int)yp;
                    if (e.LeftButton == MouseButtonState.Pressed)
                    {
                        if (i == false)
                        {
                            TxtCoordX.Text = string.Format("X: {0}", x);
                            TxtCoordY.Text = string.Format("Y: {0}", y);
                            TxtCoordZ.Text = string.Format("Z: {0}", z);
                            i = true;
                        }
                        else
                        {
                            TxtCoordX2.Text = string.Format("X: {0}", x);
                            TxtCoordY2.Text = string.Format("Y: {0}", y);
                            TxtCoordZ2.Text = string.Format("Z: {0}", z);
                            i = true;
                        }
                    }
                }
                else
                {
                    return;
                }
            }
            else
            {
                return;
            }
        }
    }

Теперь я хочу передать целочисленную переменную x, y и z в окно Distance

  • 0
    У вас есть два окна? Как создаются эти два окна? является ли один из них диалогом, который открывается из другого? можете ли вы показать код того, что вы пробовали?
Теги:
wpf
variables

1 ответ

0
  1. Объявите свой класс Distance выше по объему в вашем классе MainWindow. То, как вы это делаете прямо сейчас, оно создано и выходит за рамки, как только обработчик Click завершит выполнение.

  2. Самый быстрый и самый грязный способ сделать то, что вы просите, - создать метод в коде для вашей дистанционной формы. Это может быть что-то вроде:

    public void SetCoordinates (float x, float y, float z) {//Установить свойства здесь}

Затем вы можете сделать TextBlocks или TextBoxes этими свойствами.

  1. Вы также можете инициализировать значения x, y, z значению, передав их в конструкторе:

Вместо:

new Distance();

Делать:

new Distance(float x, float y, float z);

Затем вы можете сделать TextBlocks или TextBoxes этими свойствами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню