我正在尝试为我的测试Silverlight应用创建一个Syles.xaml文件。这是我在App.xaml文件中的内容:
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:uriMapper="clr-namespace:System.Windows.Navigation;assembly=System.Windows.Controls.Navigation"
x:Class="MVCSilverlight.App"
>
<Application.Resources>
<Style x:Key="NavigationContainerStyle" TargetType="StackPanel">
<Setter Property="Background" Value="Black" />
<Setter Property="Orientation" Value="Horizontal" />
<Setter Property="Height" Value="50" />
<Setter Property="Width" Value="500" />
</Style>
</Application.Resources>
</Application>
问题在于,当我在应用程序中包含它时,VS2010无法识别它。当我运行应用程序时,它不会显示,因为尝试查找该资源名称/值时出错。以下是如何使用它的示例:
<StackPanel Style="{StaticResource NavigationContainerStyle}">
</StackPanel>
我还尝试将样式放在一个文件中,并将其包含在app.xaml中,但也没有用。
有人能给我一些关于为什么会发生这种情况的想法吗?
答案 0 :(得分:2)
只要App仍然在项目设置中设置为启动对象,并且仍在App.xaml.cs中调用InitializeComponent(),那么XAML看起来应该可以正常工作。
如果要将样式放在Styles.xaml文件中,则需要使用merged resource dictionary将其合并到App资源中,或者直接合并到将要使用它的UserControl的资源中。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>