Visual Studio - WPF - 添加了对DLL的引用,添加了命名空间,找不到usercontrol

时间:2014-02-12 05:45:48

标签: c# wpf visual-studio-2010 visual-studio-2013

这个问题让我感到很沮丧。

我从源代码下载了demo / sample项目,将其加载到Visual Studio中,然后运行就好了。引用,命名空间和一切都在工作。

因此,我决定将引用和适当的程序集命名空间添加到我自己的项目中,以将开源解决方案合并到其中。

它不起作用:我一直得到“命名空间中名称Gauge不存在”

我非常沮丧,我将源代码中的代码同样复制到我的项目中。它仍然无法运作。我已经在Visual Studio 2010和Visual Studio 2013上测试了演示/示例项目,它可以工作。

导入此内容时,我做错了什么?

这是同时工作但不起作用的代码:

<Window x:Class="WpfGauge.Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="win"
        Width="825" 
        SizeToContent="WidthAndHeight"
        DataContext="{Binding RelativeSource={RelativeSource Self}}"
        Title="MainWindow" 
        xmlns:g="clr-namespace:WpfGauge;assembly=WpfGauge">

    <Grid>
        <StackPanel>
            <g:Gauge DockPanel.Dock="Left" 
                     Height="300" 
                     Width="300"
                     AutoScale="True" 
                     MinValue="2" 
                     MaxValue="12" 
                     ValueFormat=" {}{0} rph" />
        </StackPanel>
    </Grid>
</Window>

和C#代码:

using System.Windows;
using WpfGauge;
using System.Windows.Threading;
using System;

namespace WpfGauge.Test
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>

    public partial class MainWindow : Window
    {

        public readonly DependencyProperty RunsPerHourProperty =
                        DependencyProperty.Register("RunsPerHour", 
                        typeof(double), typeof(MainWindow));

        public double RunsPerHour
        {
            get { return (double)base.GetValue(RunsPerHourProperty); }
            set { base.SetValue(RunsPerHourProperty, value); }
        }

        public MainWindow()
        {
            InitializeComponent();

            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromSeconds(1);
            timer.Tick += (args, e) =>
                {
                    RunsPerHour = (double)DateTime.Now.Second;
                };
            timer.Start();
        }
    }
}

我对这件事情的结束......

2 个答案:

答案 0 :(得分:1)

从错误中可以明显看出 Gauge类未通过XAML文件解析

以下是您必须复制/粘贴的命名空间:

xmlns:g="clr-namespace:WpfGauge;assembly=WpfGauge"

我想在你的情况下,WpfGauge.Test下存在Gauge命名空间。此外,如果此XAML文件和Gauge类存在于同一程序集(项目)中,则可以完全省略程序集路径。

xmlns:g="clr-namespace:WpfGauge.Test

但是如果汇编不同,它应该是这样的:

xmlns:g="clr-namespace:NameSpaceOfGaugeClass;assembly=AssemblyNameOfGaugeClass"

答案 1 :(得分:0)

您可能需要将实际的DLL拖放到工具箱中。我一直这样做。打开用户控制文件所在的文件夹(bin \ debug),然后将DLL拖到IDE中工具箱的常规部分。