如何在用户控件库中定义ResourceDictionary并通过Xaml-Code访问它们。
我创造了这样的东西:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:Dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
>
<Style x:Key="NormalStyle" TargetType="{x:Type Control}">
<Setter Property="Foreground" Value="Black" />
<Setter Property="FontSize" Value="12" />
<Setter Property="FontFamily" Value="Arial" />
<Setter Property="FontStyle" Value="Normal" />
</Style>
.
.
.
</ResourceDictionary
现在我想将这个“NormalStyle”用于Control
Style="{StaticResource NormalStyle}"
但是Visual Studio说“资源”NormalStyle“无法解决。” 我错过了什么或忘记了什么?
感谢您的帮助
答案 0 :(得分:2)
您必须将ResourceDictionary
与UserControl.Resources
包含或合并,如下所示。在源代码中指定ResourceDictionary
的路径。
<UserControl.Resources>
<ResourceDictionary Source="MyResourceDictionary.xaml"/>
</UserControl.Resources>
OR
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyResourceDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
然后您可以使用UserControl中字典中的资源
Style="{StaticResource NormalStyle}"
答案 1 :(得分:0)
请在App.xamal中添加样式引用,以便在运行应用程序时加载它。 当您添加任何外部资源文件时,您需要在App.xamal中添加它以在您的应用程序中获取它的引用,否则您需要手动添加对每个xamal表单的引用以访问样式和模板
这就是你要如何使用MergedDictionaries在App.xamal中添加它,而不是在你的应用程序中引用任何样式它将有它的参考
<ResourceDictionary.MergedDictionaries>
<!--
Styles that define common aspects of the platform look and feel
Required by Visual Studio project and item templates
-->
<ResourceDictionary Source="Common/CommonStyles.xaml"/>
<ResourceDictionary Source="Project/Common/CommonStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
希望有所帮助
答案 2 :(得分:-1)
好吧,所以我把它弄成了一半。在我的UserControlLibrary中,我创建了一个新的Xaml-File“UIStandards”,将我的所有样式放入其中。现在在我的主项目中,我想访问这些样式,我想我应该使用MergedDictionary。
我做的是这个:
<Application x:Class="MentorPlusClientWindowsWPF.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MentorPlusClientWindowsWPF"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:Dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
Startup="Application_Startup">
<!--StartupUri="MainWindow.xaml"-->
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/CrossProjectUserControls;component/UIStandards.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
正如您所看到的,我引用了UISTandards.xaml,但在MainProject内的UserControl中,找不到任何样式。 任何解决方案?