c# - 从另一个窗口修改用户控件属性的值

标签 c# wpf

我有以下用户控件

public partial class LayoutWindow : UserControl
{
 ....
}

在此用户控件上,我有一个按钮可以打开另一个窗口调用PopUp

所以我试图更新 LayoutWindow UserControl diagram.Bounds 属性(即 Canvas 大小),一旦按钮(OkButton_Click)点击在 PopUp 窗口内

所以我尝试了以下事情

 public partial class PopUp : Window
 {
    private void OkButton_Click(object sender, RoutedEventArgs e)
    {          

          LayoutWindow lw= new LayoutWindow();
          lw.InitializeComponent();
          lw.diagram.Bounds = new Rect(0, 0, 400, 400);
          Close();
    }
} 

但是这样它就不会更新到上面的属性,我怎样才能正确地做到这一点

最佳答案

您正在 PopUp 窗口中创建 LayoutWindow 的新实例。您需要访问已经存在的实例。最简单的方法可能是在创建 PopUp 窗口时注入(inject) LayoutWindow 实例:

public partial class PopUp : Window
{
    private readonly LayoutWindow _lw;
    public PopUp(LayoutWindow lw)
    {
        InitializeComponent();
        _lw = lw;
    }

    private void OkButton_Click(object sender, RoutedEventArgs e)
    {
        _lw.diagram.Bounds = new Rect(0, 0, 400, 400);
        Close();
    }
}

LayoutWindow.xaml.cs:

var popup = new PopUp(this);
popup.Show();

关于c# - 从另一个窗口修改用户控件属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43522437/

相关文章:

c# - 如何将 List<int> 写入二进制文件(4 字节长)?

wpf - 如何在 WPF 中的控件上绑定(bind)本地属性

c# - UserControl InputBindings 仅在先按下按钮后工作

c# - WPF:MVVM - 如果命令为空则禁用按钮

wpf - Unity 的嵌套数据上下文

c# - 我的依赖属性仅以一种方式绑定(bind)

c# - 在 XP 上运行此 C# 代码时遇到问题

c# - JToken : Get raw/original JSON value

c# - 用于验证列表的 lambda 表达式是否正确排序

c# - 如何在 Controller 中访问 POST 请求的参数