2010-01-30 173 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

相关问题