【问题标题】:Is it possible to find out the assembly and file containing a DependencyObject?是否可以找出包含 DependencyObject 的程序集和文件?
【发布时间】:2009-05-06 20:02:31
【问题描述】:

我目前正在为 WPF 开发一个小型本地化框架(甚至不要考虑将我指向 locBAML...),并且想知道是否可以找出指定 DependencyObject 的包含程序集。

例如:我在 Window1.xaml 文件中的 XAML 中有一个普通的窗口定义。该窗口包含一个 StackPanel,其中包含一个 TextBlock。

只有对 TextBlock 的引用时,是否可以找出哪个程序集包含 Window1.xaml 文件?

是否也可以查出xaml文件的文件名(本例为“Window1.xaml”)?

在此先致谢并致以最诚挚的问候, 3福克斯

【问题讨论】:

    标签: wpf reflection assemblies dependencyobject


    【解决方案1】:

    我认为这样的事情会奏效。

    Window window = Window.GetWindow(YourTextBox);
    Assembly assembly = Assembly.GetAssembly(window.GetType());
    

    【讨论】:

    • 我目前正在工作,所以无法立即检查,但你不认为我会从中得到的程序集是包含 Window 类的程序集(除了其他 WPF 类) 而不是我的程序集?
    • 由于 'window' 是从 Window 类继承的对象,GetType() 将返回该继承类型(例如 MyWindow)。所以有了这个你可能会得到程序集。
    • 你是对的,它可以获取程序集,但我还没有找到一种方法来找出 DO 所在的代码文件/类。
    • 可以向上遍历 DependencyObject 的逻辑树,直到找到基类(无论是 Window、UserControl 等),这至少是类。我认为没有办法找出它是在哪个代码文件中定义的。
    • 你可以递归地向上每个控件的 Parent 属性,直到你打到你想要的类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多