2014-12-27 59 views
1

對WPF開發和C#有相當新的(幾天)。尋找從XAML定義和訪問應用程序資源的兩種方法之間的一個高層次的哲學差異:在WPF應用程序中定義資源的不同方法

  • 我可以在可視化編輯器中的.resx文件中定義的資源,然後像<TextBox Text="{x:Static p:Resources.name}"> XAML文件閱讀(只要「p」命名空間指向應用程序屬性)。

  • 或者,我可以在公司,比如,<sys:String x:Key="name">Name</sys:String>我的控制層次的任何地方定義的資源,然後引用它們作爲<TextBox Text="{StaticResource name}">

當我爲什麼要喜歡一個比其他?

+1

當您將應用程序本地化爲多種語言時,您會注意到不同之處。如果您使用.resx,則只需添加資源程序集(WPF查找並自動加載它們)。這個魔法是通過ResourceManager完成的。 XAML文件沒有這樣的魔力。 – gomi42

回答

0

這種類型的資源:

<TextBox Text="{x:Static p:Resources.name}"> 

一般用於代替系統註冊表,即,有存儲一些元數據的應用程序,可以改變該用戶,如背景顏色,一些設置等

從XAML

Example

綁定默認值:

xmlns:properties="clr-namespace:WorkWithSettings.Properties" 

<Button Width="100" Height="30" 
     Background="{Binding Source={x:Static properties:Settings.Default}, Path=Setting, Mode=TwoWay}" /> 
從代碼

設定值:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    WorkWithSettings.Properties.Settings.Default.Setting = "#FF007CE4"; 
} 

正如評論@gomi42所提到的,此類型的資源用於本地化應用程序。在這裏:

WPF Localization for Dummies

Sample for globalization and localization in WPF

你可以看到這個實現的例子。

這種類型的資源:

<sys:String x:Key="name">Name</sys:String> 

是常數,意味着它們不會在整個應用程序(不包括DynamicResource)的一生都在變化。我將它保留在不改變的窗口大小以及其他窗口標題的字符串中。

相關問題