2010-01-30 117 views
5

我有一個單例,一旦命中將加載用戶配置文件信息,我想使它成爲SL3應用程序中的應用程序級資源,以便應用程序中的元素可以綁定到它。用於全局訪問單例的Silverlight應用程序資源

我的代碼instantiaion的版本是一個簡單的

UserProfile x = UserProfile.GetInstance(); 

我希望能夠在App.xaml文件和WPF爲此在XAML我們有ObjectDataProvider的,所以我可以表達類似

<ObjectDataProvider MethodName="GetInstance" 
ObjectType="{x:Type local:UserProfile}" x:Key="CurrentUserProfile"/> 

我很努力地在SL3中找到正確的實現。

回答

3

正如你指出的Silverlight不具有ObjectDataProvider。如果你需要它提供的功能,比如懶惰的實例化,你需要構建一個你自己的類來處理它。如果你實際上不需要這些功能,則只需將UserProfile的一個實例添加到App.Resources在啓動時: -

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    Resources.Add("CurrentUserProfile", UserProfile.GetInstance()); 
    RootVisual = new MainPage(); 
} 
+0

我真的希望在純xaml中完成這項工作,但如果我很快就不會從某人那裏獲得基於xaml的解決方案,那麼我會給您複選標記......謝謝。 – keithwarren7 2010-01-30 14:27:06

0

Silverlight has no ObjectDataProvider

這就是說,你可以用你的Silverlight對象的DataContext .....

Application.DataContext = UserProfile.GetInstance(); 
+1

會發生什麼,如果你再需要分配的用戶控件等一些實際應用數據的DataContext,而不是外設用戶信息? – AnthonyWJones 2010-01-30 09:01:46

相關問題