MetroApps 找不到 ResourceDictionary 2.0.0-alpha0748

MetroApps not finding ResourceDictionary 2.0.0-alpha0748

我正在考虑使用 Nuget 的 MetroApps 2.0.0-alpha0748。我已将其纳入我的项目并开始实施。

我在现有应用程序中使用它,这个 window 将从该应用程序内部的插件调用。所以我不拥有应用程序上下文。所以我没有使用典型的 Application.xaml 共享资源,我希望在这里解决这个问题。

一切构建正确。每当我 运行 时,我都会收到以下错误。

<Controls:MetroWindow x:Class="FamilyBrowser.Browser.ApplicationView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
        xmlns:helper="clr-namespace:RevitFamilyBrowser.BrowserHelper"
        xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
        xmlns:local="clr-namespace:FamilyBrowser.Browser"
        xmlns:vm="clr-namespace:FamilyBrowser.BrowserViewModel"
        xmlns:view ="clr-namespace:FamilyBrowser.BrowserView"
        xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
        Title="Family Browser" Height="800" Width="800"
        MinHeight="300" MinWidth="400" Closing="Window_Closing"
    >
    <Window.DataContext>
        <vm:ViewModelMain/>
    </Window.DataContext>
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Themes/dark.red.xaml" />
            </ResourceDictionary.MergedDictionaries>
         </ResourceDictionary>
    </Window.Resources>
</Controls:MetroWindow>

MahApps Error

我从 MahApps.Metro 下载了代码示例,并且能够毫无问题地构建和 运行 HamburgerMenuNavigation 示例。我还能够将 styles/themes 示例从 dark.red 更改为 light.red 到 light.orange.xaml 等,没有任何问题确认这不是机器特定问题。

更新:

<Controls:MetroWindow x:Class="FamilyBrowser.Browser.ApplicationView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
        xmlns:helper="clr-namespace:FamilyBrowser.BrowserHelper"
        xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
        xmlns:local="clr-namespace:FamilyBrowser.Browser"
        xmlns:vm="clr-namespace:FamilyBrowser.BrowserViewModel"
        xmlns:view ="clr-namespace:FamilyBrowser.BrowserView"
        xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
        Title="Family Browser" Height="800" Width="800"
        MinHeight="300" MinWidth="400" Closing="Window_Closing"
    >
    <Controls:MetroWindow.DataContext>
        <vm:ViewModelMain/>
    </Controls:MetroWindow.DataContext>
    <Controls:MetroWindow.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Themes/Dark.Red.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Controls:MetroWindow.Resources>
    <Grid>
    </Grid>
</Controls:MetroWindow>

更新#2:

我们发现这是在 MahApps 的 1.* 库中加载另一个 .dll 时出现的错误,尽管我正在加载 2.* alpha 内容。

名称区分大小写。请尝试Dark.Red.xaml。它应该适用于最后一个 alpha。

快乐编码 蒂姆

我把你的代码片段放到了一个新的干净的示例应用程序中。我刚刚删除了与模型的连接,因为我手头没有你的模型。

结果如下:

这里是修改后的 XAML:

<Controls:MetroWindow x:Class="WpfApp1.MainWindow"
                      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                      xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
                      Title="Family Browser"
                      Width="800"
                      Height="800"
                      MinWidth="400"
                      MinHeight="300">
    <Controls:MetroWindow.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Themes/Dark.Red.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Controls:MetroWindow.Resources>
    <Grid>
        <TextBlock HorizontalAlignment="Center"
                   VerticalAlignment="Center"
                   FontSize="100"
                   Foreground="{DynamicResource MahApps.Brushes.Accent}"
                   Text="Hello World" />
    </Grid>
</Controls:MetroWindow>

我想你的应用程序肯定还有其他问题。如果您可以在 Github 上上传非 运行 示例,我可能会看看是否发现了错误。也许 StyleStaticResource 是错误的,或者找不到 MahApps-DLL。

快乐编码 蒂姆

Image to Solution

最初的问题是因为其他应用程序使用 MahApps 而我尝试使用 MahApps 并从不同版本加载两个程序集。

通过导航到调试 > Windows > 模块以确定存在两个不同的程序集,可以更快地掌握这一点。