相当新的(几天)WPF开发和C#。寻找从XAML定义和访问应用程序资源的两种方法之间的高级哲学差异:
我可以在可视化编辑器中定义.resx文件中的资源,然后在像<TextBox Text="{x:Static p:Resources.name}">
这样的XAML文件中读取它们(假设“p”命名空间指向应用程序属性)。
或者我可以在控制层次结构中的任何位置定义资源,例如<sys:String x:Key="name">Name</sys:String>
,然后将其引用为<TextBox Text="{StaticResource name}">
我何时以及为什么要优先选择其他人?
答案 0 :(得分:0)
此类资源:
<TextBox Text="{x:Static p:Resources.name}">
通常使用而不是系统注册表,即存储一些可以更改用户的元数据应用程序,例如背景颜色,某些设置等。
Example
从XAML绑定默认值:
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
中所述,此类资源用于本地化应用程序。这里:
Sample for globalization and localization in WPF
您可以看到此实施的示例。
此类资源:
<sys:String x:Key="name">Name</sys:String>
是常量并且意味着它们在应用程序的整个生命周期中都不会更改(不包括DynamicResource
)。我保留窗口大小不会改变,以及其他窗口标题串。