绑定到另一个项目中的App属性

时间:2016-01-24 17:59:42

标签: c# wpf

这是一个WPF问题。我的解决方案中有两个项目,比如ProjectA和ProjectB,ProjectB引用ProjectA。在ProjectA App.cs类中,我声明了一个属性PropA(public和static)。我的问题是:如何从ProjectB中的XAML绑定到PropA?

显然

{Binding PropA,Source={x:Static Application.Current}}

不起作用,我无法解决问题。任何帮助将不胜感激!

更新

为了澄清任何混淆,这里有一些细节。 ProjectA包含一个需要更新App级别集合的ViewModel类。我的问题是从ProjectB中的窗口绑定到XAML中的集合。我最终通过将集合移动到ProjectB App类并从ProjectA中的ViewModel触发事件来解决这个问题。然后,在窗口的代码隐藏(我将ViewModel的实例设置为数据上下文)中,我只需订阅该事件并相应地执行操作。 MVVM纯粹主义者现在可能会变成绿色,但一点点代码隐藏永远不会伤害!

2 个答案:

答案 0 :(得分:0)

你不能。你需要反过来参考,这个循环引用对C#无效。

您可以将其提取到第三个项目,让另外两个使用它。

答案 1 :(得分:0)

您需要引用ProjectA.App实例。例如,您可以在ProjectB.App上拥有公共财产:

namespace ProjectB 
{
    public partial class App : Application 
    {
        ...

        // this public property exposes an instance of ProjectA.App
        public ProjectA.App TheOtherApp ...

        ...
    }
}

然后你就像绑定它一样:

{Binding TheOtherApp.PropA, Source={x:Static Application.Current}}