1

我现在开始使用MahApps.Metro UI 工具包。但我得到了第一个问题:(

命名空间“Demo.MahApps.Metro”中不存在类型或命名空间名称“Controls”

我的 MainWindow.xaml 是:

<controls:MetroWindow x:Class="Demo.MahApps.Metro.MainWindow"
    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"
    Title="MainWindow" Height="350" Width="525">

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

<Grid>

</Grid>

他的代码背后:

namespace Demo.MahApps.Metro
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

我已经安装了预发布包:

在此处输入图像描述

具体来说,我在这一行的自动生成的 MainWindow.g.cs 中遇到了问题:

public partial class MainWindow : MahApps.Metro.Controls.MetroWindow, System.Windows.Markup.IComponentConnector {

我试图将 MetroWindow 放在 Code Behind 中,但不起作用。

public partial class MainWindow : MetroWindow
{
    ...
}

谢谢大家和问候!

4

1 回答 1

1

您的应用程序命名空间似乎隐藏了MahApps.Metro命名空间。因此,尝试将您的命名空间更改为不包含的内容MahApps.Metro

namespace Demo
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

你的 XAML :

<controls:MetroWindow x:Class="Demo.MainWindow"
        .........
        .........>

与重命名现有项目相比,创建一个新项目并使用不同的命名空间是一种更安全、更简洁的选择。

于 2014-03-16T11:44:39.877 回答