带有资源字典的 WPF 样式模板

WPF Style template with recource dictionary

我是新手,所以这可能是一件非常简单的事情,但可能是错误的...

我尝试使用 ResourceDictionary 样式,但是当我尝试在我的应用程序中使用它时它不起作用。 这是目录:

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

<LinearGradientBrush x:Key ="DarkBackground" StartPoint ="0,0" EndPoint =" 1,1">
    <GradientStop Offset="0" Color =" #FF333344"></GradientStop>
    <GradientStop Offset="1" Color =" #FF666677"></GradientStop>
</LinearGradientBrush>

<LinearGradientBrush x:Key="StandardBackground" EndPoint="0,1" StartPoint="0,0">
    <GradientStop Color="#FFF3F3F3" Offset="0"/>
    <GradientStop Color="#FFEBEBEB" Offset="0.5"/>
    <GradientStop Color="#FFDDDDDD" Offset="0.5"/>
    <GradientStop Color="#FFBBBBBB" Offset="1"/>
</LinearGradientBrush>

Application.xaml 看起来像这样:

<Application x:Class="MyApplication.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="\src\GUI\MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary Source ="StyleTemplates.xaml"> </ResourceDictionary>
    </Application.Resources>
</Application>

主窗口中的条目:

<Window
        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"

在我的 MainWindow 中,我想做类似的事情:

<TabItem Header="Project config" Background="{StaticResource StandardBackground}" Margin="-2,-2,2,0" IsEnabled="{Binding ToolPreference.ProjectLoaded}">

接下来我需要做什么才能在我的 MainWindow.xaml 以及所有其他可用 windows 中将样式作为静态资源获取?

在我的 MainWindow.xaml 中,我现在可以在尝试此操作时看到 "StandardBackground":

<TabItem Header="Project config" Background="{StaticResource x:StandardBackground}" Margin="-2,-2,2,0" IsEnabled="{Binding ToolPreference.ProjectLoaded}">

当我添加 "x:" 时,我得到一个包含 StandardBackground 和 DarkBackground 的下拉列表。但是我得到了错误:(从德语翻译成英语)"The resource: x:StandardBackground could not be resolved"

尝试

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source ="StyleTemplates.xaml"> </ResourceDictionary>
       </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

你的 XAML 没问题。我怀疑您的 StandardBackground 和 DarkBackground 资源在其他控件上可以正常工作。在这种情况下,您的问题是 TabItem 的背景 属性 无效。您需要研究 TabControl 的样式以获得您想要的外观。

要验证您的样式是否至少可以访问,您可以尝试以下 XAML 更改:

<TabItem>
    <TabItem.Header>
        <TextBox Text="Project config" Background="{StaticResource StandardBackground}" />
    </TabItem.Header>
</TabItem>