2016-01-24 44 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哎呀,我的綁定例子是錯誤的,只是糾正。 –

相關問題