[英]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
成员。
共有三个选项:
将访问修饰符(在原始项目中)更改为public
使用反射来访问字段(例如, FieldInfo fi = window.GetType().GetField("tb_mp")
)
使用VisualTreeHelper
遍历窗口中的控件。 这是一个更复杂的主题,在这里进行了详细讨论: 如何通过名称或类型查找WPF控件? 此处: WPF:如何循环浏览窗口中的所有控件?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.