繁体   English   中英

从另一个程序集访问WPF窗口控件

[英]Access WPF window control from another assembly

我有一个库DLL,以及一个依赖于所述库的WPF测试exe。 这是测试exe:

using MyLibrary;

namespace WpfTest
{
    public partial class Window2 : Window
    {
        private MyLibrary _mylib;

        public Window2()
        {
            InitializeComponent();
            this.Loaded += window2Loaded;
        }

        void window2Loaded(object sender, RoutedEventArgs e)
        {
            _mylib = new MyLibrary(this);
        }
    }
}

在MyLibrary类(在DLL中)中,我具有以下构造函数:

    public MyLibrary (System.Windows.Window window) // BREAKPOINT HERE.
    {
        ...

在上面的断点处,调试器显示了我要访问的TextBlock (tb_mp):

在此处输入图片说明

我需要做什么,以便在Visual Studio中键入window.tb_时,IntelliSense会提供将其完成为window.tb_mp

没什么,你不能。 Locals widnow在tb_mp Local旁边显示一个信封图标,这意味着它是internal成员(请参阅此处: https : tb_mp ) 。 Visual Studio的智能感知窗口不会列出您无权访问的成员,在这种情况下,该成员是另一个项目的internal成员。

共有三个选项:

  1. 将访问修饰符(在原始项目中)更改为public

  2. 使用反射来访问字段(例如, FieldInfo fi = window.GetType().GetField("tb_mp")

  3. 使用VisualTreeHelper遍历窗口中的控件。 这是一个更复杂的主题,在这里进行了详细讨论: 如何通过名称或类型查找WPF控件? 此处: WPF:如何循环浏览窗口中的所有控件?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM