2009-09-07 33 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