我正在创建一个Windows Phone 8应用。在应用程序中,我在XAML文件中定义了一个ResourceDictionary:
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="YellowGreen" />
<Setter Property="FontSize" Value="35" />
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
<Style TargetType="TextBox" x:Key="CommonSetters">
<Setter Property="Width" Value="450"/>
<Setter Property="FontSize" Value="35" />
<Setter Property="Foreground" Value="YellowGreen" />
<Setter Property="Height" Value="100"/>
<Setter Property="Background" Value="Red">
<!--<Setter.Value>
<ImageBrush ImageSource="logo.png" Opacity="0.1"/>
</Setter.Value>-->
</Setter>
</Style>
</ResourceDictionary>
此ResourceDictionary在App.xaml中引用为:
的xmlns:壳= “CLR-名称空间:Microsoft.Phone.Shell;装配= Microsoft.Phone” &GT;
<!--Application Resources-->
<Application.Resources>
<local:LocalizedStrings xmlns:local="clr-namespace:Work_Force" x:Key="LocalizedStrings"/>
<ResourceDictionary x:Key="myDict">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resource.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<Style TargetType="TextBlock" x:Key="NN">
<Setter Property="Width" Value="450"/>
<Setter Property="FontSize" Value="35" />
<Setter Property="Foreground" Value="YellowGreen" />
<Setter Property="Height" Value="100"/>
</Style>
</Application.Resources>
<Application.ApplicationLifetimeObjects>
<!--Required object that handles lifetime events for the application-->
<shell:PhoneApplicationService
Launching="Application_Launching" Closing="Application_Closing"
Activated="Application_Activated" Deactivated="Application_Deactivated"/>
</Application.ApplicationLifetimeObjects>
</Application>
然后很容易做到:
静态资源NN工作正常,但commonSetters在resourse.xaml中声明它没有工作。
答案 0 :(得分:1)
您在App.xaml中定义资源的方式,您的'myDict'资源字典是Application.Resources默认字典中的嵌套字典。我不知道如何在XAML中引用嵌套字典中的资源的任何语法(因为我还不需要它;我认为来自代码的FindResource(...)可以实现这一点)。解决问题的方法是,直接修改Application.Resources的默认字典以与“资源”字典合并。您可以通过修改Application.Resources部分来执行此操作:
<Application.Resources>
<ResourceDictionary>
<local:LocalizedStrings xmlns:local="clr-namespace:PhoneApp1" x:Key="LocalizedStrings"/>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
请注意,现在您还没有名为“myDict”的ReosurceDictionary。您的“资源”字典将直接合并到默认字典中,该字典没有密钥。然后资源将被正确解析。
答案 1 :(得分:0)
最后我得到的解决方案类似于aspx或html页面,我们在所需页面中添加样式的引用
无论你在哪里,都需要在你需要的页面中添加页面的引用
<phone:PhoneApplicationPage.Resources>
<ResourceDictionary Source="yourstylepage.xaml"/>
</phone:PhoneApplicationPage.Resources>
将上述代码放在<phone:PhoneApplicationPage>