无法找到资源字典?

时间:2016-01-11 09:03:55

标签: wpf xaml syncfusion

至少我认为这是问题...

我的项目结构如此(为简洁起见省略了文件)

Project
  Assets
    ResourceDictionaries
       Styles.xaml
  MainWindow.xaml

我在MainWindow.xaml中引用资源字典,如下所示

<Window.Resources>
  <ResourceDictionary>
     <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Assets/ResourceDictionaries/Styles.xaml"/>
     </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
<Window.Resources/>

但没有一种风格适用于任何元素。

我已检查Build Action设置为page。我也尝试在字典中给出一些关键字样式,但Blend不能看到&#39;&#39;这些钥匙。

我做错了什么?

修改:相关代码。显然,如果我将属性放在他们工作的实际元素上,但是在字典中他们不会:

MainWindowStyles.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:Company.Client.Assets.ResourceDictionaries"
                    xmlns:wpf="http://schemas.syncfusion.com/wpf">

    <Style TargetType="{x:Type wpf:RibbonWindow}">
        <Setter Property="wpf:SkinStorage.VisualStyle" Value="Office2010Silver"/>
    </Style>

    <Style TargetType="{x:Type wpf:Ribbon}">
        <Setter Property="BackStageColor" Value="#622166"/>
    </Style>

</ResourceDictionary>

MainWindow.xaml

<wpf:RibbonWindow x:Class="Company.Client.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:wpf="http://schemas.syncfusion.com/wpf"
        xmlns:local="clr-namespace:Company.Client"
        mc:Ignorable="d"
        Title="MainWindow" Height="600" Width="800">
    <wpf:RibbonWindow.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Assets/ResourceDictionaries/MainWindowStyles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </wpf:RibbonWindow.Resources>
    <Grid>
        <wpf:Ribbon BackStageHeader="DB">
            <wpf:Ribbon.BackStage>
                <wpf:Backstage>
                    <wpf:BackStageCommandButton Header="Save"/>
                </wpf:Backstage>
            </wpf:Ribbon.BackStage>
        </wpf:Ribbon>
    </Grid>
</wpf:RibbonWindow>

编辑2: 这是迄今为止所尝试的内容:

  • 尝试将样式应用于普通控件(按钮,标签等)。作品
  • 尝试在<wpf:MainWindow.Resources>下添加样式。不行吗
  • 尝试了一个包URI。不行吗
  • 将样式/属性添加到实际元素中。作品(显然)

3 个答案:

答案 0 :(得分:2)

使用pack URI语法:

<ResourceDictionary Source="pack://application:,,,/Assets/ResourceDictionaries/Styles.xaml"/>

答案 1 :(得分:2)

您是否尝试过以下两个步骤:

  • 将MainWindowStyles.xaml添加到app.xaml中的Application.Resources部分
  • 为RibbonWindow使用显式样式,如下所示:

    <RibbonWindow>
    ...
    <RibbonWindow.Style>
        <StaticResource ResourceKey="RadRibbonWindowStyle"/>
    <RibbonWindow.Style>
    

答案 2 :(得分:0)

添加此内容以补充accepted answer.

我的代码现在看起来像这样。我没有设法使用VisualStyle属性,但这样做。如果有人确实知道如何将其纳入资源字典,那么将非常感谢帮助。 :)

长话短说,这是基于我与@AlexSeleznyov之间交流的代码

<强> MainWindowStyles.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:wpf="http://schemas.syncfusion.com/wpf">

    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/Syncfusion.Tools.Wpf;component/framework/ribbon/themes/office2010silverstyle.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    <Style x:Key="MainRibbon" TargetType="{x:Type wpf:Ribbon}" BasedOn="{StaticResource Office2010SilverRibbonStyle}">
        <Setter Property="BackStageColor" Value="#622166"/>
    </Style>
</ResourceDictionary>

<强> MainWindow.xaml

<wpf:RibbonWindow x:Class="Company.Client.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:wpf="http://schemas.syncfusion.com/wpf"
        xmlns:local="clr-namespace:Company.Client"
        mc:Ignorable="d"
        wpf:SkinStorage.VisualStyle="Office2010Silver"
        Title="MainWindow" Height="600" Width="800"
        Icon="Assets/Icons/ApplicationIcon.ico">
    <wpf:RibbonWindow.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Assets/ResourceDictionaries/MainWindowStyles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </wpf:RibbonWindow.Resources>
    <Grid>

        <wpf:Ribbon BackStageHeader="File" Style="{StaticResource MainRibbon}">
            <wpf:Ribbon.BackStage>
                <wpf:Backstage>
                    <wpf:BackStageCommandButton Header="Save"/>
                </wpf:Backstage>
            </wpf:Ribbon.BackStage>
        </wpf:Ribbon>
    </Grid>
</wpf:RibbonWindow>