編輯3:TLDR-版本WPF數據綁定辛格爾頓屬性(從多個Windows)
我有一個單身DependencyObject
說我綁定用戶控件來。某些用戶控件位於主窗口中,其中一些顯示在單獨的窗口(設置窗口)中。出現在設置窗口中的那些不能正確綁定,並且不會影響單例中的值。
我有一個單身人士DependencyObject
,我用它來存儲應用程序範圍的設置。我還得到了一個設置對話框,用戶(理論上)可以使用它來控制單身內部的值。
該應用程序很大程度上處理文檔,所以我需要能夠存儲多個不同項目的字體設置。所以我創建了一個名爲FontSettings的DependencyObject,它包含諸如字體家族和字體大小之類的依賴屬性。
對於需要單獨控制的項目的每個「部分」,有不同的DependencyObject
。
所以,嵌套對象的整個結構看起來像:
MySettings
{
PropertyGroup AProperties;
PropertyGroup BProperties;
PropertyGroup CProperties;
}
PropertyGroup
{
FontSettings FontStgs;
}
每個PropertyGroup
是一種獨特的DependencyObject
,但他們都將包含一個FontSettings對象。
所以,因爲我知道我需要在許多地方顯示FontSettings對象的設置控件,所以我創建了一個簡單的UserControl來修改它們。我認爲我可以簡單地將UserControl的DataContext綁定到我希望它修改的FontSettings對象,因此,UserControl中的更改將反映在MySettings對象中(UserControl內部的控件是綁定到FontSettings的屬性)。但是當我在UserControl的構造函數上設置斷點時,DataContext在初始化後始終爲空。
如果這不夠清楚是有幫助的,讓我知道,我會發布實際的代碼。
這裏是我的XAML的片段設置窗口內:
<local:FontSettingsControl DataContext="{Binding Source={x:Static stg:MySettings.Instance}, Path=PageHeaderSettings.CompanySettings}" />
CompanySettings是FontSettings類型。
TLDR版本: 我似乎無法得到DataContext正確綁定。如果是這樣,我認爲這些控件會正確地影響設置。
我需要將DataContext指向CompanySettings DependencyObject。
到CompanySettings對象的完整路徑是:
的設置單MySettings.Instance.PageHeaderSettings.CompanySettings:MySingleton
編輯:
檢查出來的東西與探聽後,它出現DataContext沒有被設置。我的綁定表達有問題嗎?
編輯2:
好像我的問題是從事實,我想綁定到用戶控件是一個窗口,是不是主窗口出現。當我將UserControl放在主窗口中時,所有工作都按預期工作。那麼,有沒有人知道問題實際是由什麼引起的(我認爲它有根源於線程)以及我應該如何繼續設置我的設置窗口功能?
首先出錯的是UserControl(FontSettingsControl)具有綁定到名爲FontSize的屬性的ComboBox,但是當我更改ComboBox中的值時,MySettings.Instance.PageHeaderSettings.CompanySettings中的對應值對象不會更新。我要去看看Snoop,看看我能否找到更準確的錯誤位置。 – 2010-09-20 13:01:01