理想情況下,我希望在應用程序類中放置一些屬性,以便我的WPF應用程序在窗口,對話框,控件等之間共享。從其他WPF組件引用這些屬性很簡單或者我應該讓他們靜態更容易訪問?從WPF中的窗口類引用應用程序類屬性
0
A
回答
1
在我看來,在App類放置屬性的最大問題是你的代碼將緊密耦合。此外,這些屬性可能超出了App類的範圍。
如果您不關心模式,即您的應用程序不會增加複雜性,那麼在App類中使用屬性可能是一個快速而簡單的解決方案。但是,如果你在一個已經很複雜(或不斷增長)的代碼中這樣做,它可能會導致你很頭疼。
如果通過將屬性設置爲靜態,則意味着將它們放在某個類中並在另一個類中引用它,則會得到不太緊密的代碼,但不夠鬆散。
1
如果您在App類公開屬性,你可以聲明通過設置的DataContext綁定到這些屬性:
DataContext="{x:Static Application.Current}"
我然而,隨着愛德華同意,你要結束了緊耦合到您的應用程序實現。您可以通過定義一個靜態類來緩解這種情況,但可以爲您的視圖創建視圖模型,這些模型在內部使用您的靜態類來檢索綁定的值。
如果你的大多數屬性都是字符串,你可以在你的應用程序的資源定義它們(要做到這一點,你需要的資源從內部到公共改變)和靜態訪問它們像這樣:
<Window
x:Class="MyApp.Shell"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d"
xmlns:properties="clr-namespace:MyApp.Properties"
Title="{x:Static properties:Resources.Shell_Title}" WindowStartupLocation="CenterScreen" WindowState="Normal"
></Window>
相關問題
- 1. WPF應用程序頁面外部窗口設置屬性
- 2. 從庫中獲取引用C#類庫的應用程序的屬性
- 3. 從WPF應用程序引用Silverlight類庫時的錯誤
- 4. TypeScript錯誤TS2339:「窗口」類型中不存在屬性「應用程序」
- 5. C#WPF應用程序類
- 6. 模擬WPF窗口類中的AcceptButton屬性?
- 7. z-order應用程序窗口 - WPF
- 8. 從MVC應用程序引用DomainService類?
- 9. 從C#中的另一個應用程序顯示WPF窗口#
- 10. 如何從程序集級屬性中引用私有類的類型?
- 11. Winforms和WPF中的應用程序類
- 12. 從C類中的類庫訪問Windows應用程序窗體#
- 13. 子類WPF窗口
- 14. 從WinForms&WPF應用程序的鏈接窗體應用程序打開WPF窗口
- 15. 應用程序窗口中的光標不正確類型
- 16. 顯示從System.Configuration.Install.Installer類的WPF窗口
- 17. 大廈WPF應用程序類型WPF類libarary的
- 18. C#屬性引用類型?
- 19. 動態引用類屬性
- 20. 動態引用類屬性
- 21. 無窗WPF應用程序
- 22. 從命令提示符應用程序創建WPF窗口
- 23. 更新從不同線程的WPF窗口屬性
- 24. 如何在wpf多線程應用程序中訪問窗口
- 25. 引用.kv文件中的類屬性
- 26. 在執行主窗口窗體應用程序類之前執行其他類
- 27. 從非窗口類訪問WPF控件
- 28. Python - 如何從屬性類中獲取類實例引用?
- 29. Angular 2 AOT - 屬性「窗口」在類型
- 30. 用MS Word開窗口編程WPF應用程序
所以我認爲應用程序類並不意味着以我現在提議的方式使用。我認爲在該類中放置一些屬性是很好的,以便其他窗口可以訪問信息,但我認爲你可能是對的。這不是一個大的應用程序,但我希望通過使用良好的做法儘可能保持一致。 – jlafay 2010-11-22 19:24:54