2016-01-24 41 views
0

这是一个WPF问题。我的解决方案中有两个项目,称ProjectA和ProjectB,ProjectB引用ProjectA。在ProjectA App.cs类中,我声明了属性PropA(公共和静态)。我的问题是这样的:我怎样才能绑定到PropA从XAML在ProjectB?绑定到不同项目中的应用程序属性

显然

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

将无法​​正常工作,我不能换我的头周围的问题。任何帮助将不胜感激!

更新

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

+1

好了,你引用的项目A,但是你创建项目A的一个实例。应用程序?绑定需要源对象。 –

+0

是的,实例创建得很好。 –

+0

如果你创建了一个实例,你只需要在绑定中引用该实例。看到我的答案。 –

回答

0

你不能。你需要一个反向引用,这个循环引用对C#无效。

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

+0

我这么认为! :(我想我将不得不使用另一个项目 - 或想办法解决问题 –

+0

ProjectA在这里不需要参考ProjectB –

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}} 
+0

看起来不错!我会试试看!谢谢你的提示! –

+0

@GeysserSdz哎呀,我的绑定例子是错误的,只是纠正。 –

相关问题