Извините за дубликат, но моя низкая репутация не позволяет мне комментировать сообщения.
Я пытаюсь использовать MaterialDesignXamlToolkit с WPF с библиотекой классов, точно так же, как в этом сообщении: Как сделать включить MaterialDesignXamlToolkit в библиотеку классов WPF?
- поэтому я установил NuGet Material Design и добавил ResourceDictionary с именем MaterialDesign.xaml, куда я скопировал и вставил этот код:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" />
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" />
</ResourceDictionary.MergedDictionaries>
затем я создал новую страницу WPF, на которой я добавил ресурс, поэтому мой xaml выглядит так:
<Page x:Class="test.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:test"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Title="Page1"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
TextElement.FontWeight="Regular"
TextElement.FontSize="13"
TextOptions.TextFormattingMode="Ideal"
TextOptions.TextRenderingMode="Auto"
Background="{DynamicResource MaterialDesignPaper}"
FontFamily="{DynamicResource MaterialDesignFont}">
<Page.Resources>
<ResourceDictionary Source="/MyAsembly;component/ResourceDictionary/MaterialDesign.xaml" />
</Page.Resources>
<Grid>
<materialDesign:Card Padding="32" Margin="16">
<TextBlock Style="{DynamicResource MaterialDesignTitleTextBlock}">My First Material Design App</TextBlock>
</materialDesign:Card>
</Grid>
Конечно, я получил ошибку: ресурс {MaterialDesignBody, MaterialDesignPaper, MaterialDesignFont} не может быть разрешен
как @ Marija Raki c упоминается в сообщении, я высушил, чтобы добавить фиктивные строки на свой Page1.xaml. cs class
using MaterialDesignColors;
using MaterialDesignThemes.Wpf;
using System.Windows.Controls;
namespace test
{
/// <summary>
/// Interaction logic for Page1.xaml
/// </summary>
public partial class Page1 : Page
{
public Page1()
{
ColorZoneAssist.SetMode(new GroupBox(), ColorZoneMode.Accent);
Hue hue = new Hue("name", System.Windows.Media.Color.FromArgb(1, 2, 3, 4), System.Windows.Media.Color.FromArgb(1, 5, 6, 7));
InitializeComponent();
}
}
}
, но это не помогло. Ошибка все еще существовала. Итак, я попробовал решение @ Trygve и создал еще один класс с именем MaterialDesign.xaml.cs, где я добавил сборку
using System.IO;
using System.Reflection;
using System.Windows;
namespace test
{
partial class MaterialDesign: ResourceDictionary
{
public MaterialDesign() {
Assembly.LoadFrom(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "MaterialDesignThemes.Wpf.dll"));
Assembly.LoadFrom(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "MaterialDesignColors.dll"));
InitializeComponent();
}
}
}
и добавил ссылку на MaterialDesign.xaml:
x:Class="test.MaterialDesign"
, но это тоже не сработало, и упомянутая ошибка все еще существует. Не знаю, где я ошибаюсь ..