我有一个库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
完成它?
答案 0 :(得分:2)
没什么,你做不到。本地人widnow在tb_mp
本地旁边显示一个信封图标,这意味着它是internal
成员(请参阅此处:https://msdn.microsoft.com/en-us/library/y47ychfe(v=vs.100).aspx)。 Visual Studio的智能感知窗口不会列出您无权访问的成员,在本例中为internal
成员来自其他项目。
有三种选择:
将访问修饰符(在原始项目中)更改为public
使用反射来访问该字段(例如FieldInfo fi = window.GetType().GetField("tb_mp")
)
使用VisualTreeHelper
遍历窗口中的控件。这是一个更复杂的主题,请在此详细讨论:How can I find WPF controls by name or type?此处:WPF: How do I loop through the all controls in a window?