Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定到其他项目中的应用程序属性_C#_Wpf - Fatal编程技术网

C# 绑定到其他项目中的应用程序属性

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}} 这行不通,我也不能对这个问题束手无策。任何帮助都将不胜感激 更新 为了澄清任何困惑,这里有一些细节。

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

显然

{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,我的绑定示例是错误的,刚刚更正。