带有资源字典的 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>
我是新手,所以这可能是一件非常简单的事情,但可能是错误的...
我尝试使用 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>