C# 绑定到其他项目中的应用程序属性
这是一个WPF问题。我的解决方案中有两个项目,比如ProjectA和ProjectB,ProjectB引用ProjectA。在ProjectA App.cs类中,我声明了一个属性PropA(public和static)。我的问题是:如何在ProjectB中从XAML绑定到PropA 显然C# 绑定到其他项目中的应用程序属性,c#,wpf,C#,Wpf,这是一个WPF问题。我的解决方案中有两个项目,比如ProjectA和ProjectB,ProjectB引用ProjectA。在ProjectA App.cs类中,我声明了一个属性PropA(public和static)。我的问题是:如何在ProjectB中从XAML绑定到PropA 显然 {Binding PropA,Source={x:Static Application.Current}} 这行不通,我也不能对这个问题束手无策。任何帮助都将不胜感激 更新 为了澄清任何困惑,这里有一些细节。
{Binding PropA,Source={x:Static Application.Current}}
这行不通,我也不能对这个问题束手无策。任何帮助都将不胜感激
更新
为了澄清任何困惑,这里有一些细节。
ProjectA包含需要更新应用程序级集合的ViewModel类。我的问题是从ProjectB中的窗口绑定到XAML中的集合。通过将集合移动到ProjectB应用程序类并从ProjectA中的ViewModel触发事件,我最终解决了这个问题。然后,在窗口的代码隐藏中(我将ViewModel的一个实例设置为数据上下文),我只需订阅事件并相应地执行操作。MVVM纯粹主义者现在可能会变成绿色,但一点代码隐藏不会有什么坏处 你不能。您需要一个vise versa引用,而此循环引用对C#无效
您可以将其提取到第三个项目,并让其他两个使用它。您需要一个对
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}}
好的,您引用了ProjectA,但是您是否创建了ProjectA.App的实例?绑定需要源对象。是的,实例创建得很好。如果已创建实例,则只需在绑定中引用该实例。看到我的答案了。你想在两个应用程序之间共享实际绑定的数据吗?我想是的!:(我想我必须使用另一个项目,或者想办法解决这个问题。)这里ProjectA不需要引用ProjectB。@GeysserSdz oops,我的绑定示例是错误的,刚刚更正。