2009-09-07 35 views
7

我的App.xaml.cs中有一个Property,名为User,其中包含用户详细信息。 我已阅读here,您不能在App类上拥有依赖项属性。绑定到App.xaml.cs中的属性

我选择使用App.cs,因为它对整个程序来说是全局的,并且用于访问控制,但是欢迎任何替代方案。

现在我的问题是如何从我的UserControls和Windows绑定到此属性。

IsEnabled="{Binding Path=User, Converter={StaticResource hasAccessConverter}, ConverterParameter=Mid}" 

这显然只适用于DataContext上的一个属性。我想访问该应用程序的属性。 如果我实现了INotifyChanged,有人可以给我看一个绑定到App.xaml.cs属性的例子吗?

感谢 -Oliver

回答

22

我看过这里,你不能对App类的依赖属性。

事实上,你不能,因为Application不会继承自DependencyObject。但是,这不是必需的:只有目标绑定的属性需要是依赖项属性。

如果你希望绑定到你的App类的属性,你可以做这样的:

IsEnabled="{Binding Path=User, Source={x:Static Application.Current}}" 
+0

非常感谢你。它效果很好。 – Oliver 2009-09-08 07:01:00

+1

只需注意一点,即在Silverlight中无法做到这一点。 x:Static和x:Type在Silverlight世界中不存在。 – Oliver 2011-02-21 15:29:59

+0

请记住实施INotifyPopertyChanged以查看在用户界面上反映的对该属性的更改。 – sergiol 2012-08-21 17:28:08

4

并以编程方式访问它在C#中,你可以这样做:

((App)Application.Current).YourMethod 
((App)Application.Current).YourProperty 
0

通过使用自定义转换器,您可以在Silverlight中声明式绑定到Application.Current。

请参见我的博客文章here

+0

Lone链接[被认为是一个很差的答案](http://stackoverflow.com/faq#deletion),因为它本身毫无意义,并且目标资源在将来不保证活着。 [这将是最好的](http://meta.stackexchange.com/q/8259)在这里包括答案的基本部分,并提供链接供参考。 – j0k 2013-01-02 12:32:44