Silverlight中的XAML样式无法识别

时间:2010-08-13 14:00:49

标签: silverlight xaml styles

我正在尝试为我的测试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中,但也没有用。

有人能给我一些关于为什么会发生这种情况的想法吗?

1 个答案:

答案 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>