Visual Studio 2015 Xaml错误没有意义

时间:2015-12-25 17:42:46

标签: c# wpf xaml visual-studio-2015

我是WPF编程的新手,所以请原谅我这是否是一个明显的错误。我有一个UserControl对象,其中包含以下Xaml:

    <UserControl x:Class="SDMAS.LOOPAnalyzer.Views.Workspace"
             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:dg="http://schemas.microsoft.com/wpf/2008/toolkit" 
             xmlns:local="clr-namespace:SDMAS.LOOPAnalyzer.Models" >

  <UserControl.Resources>
    <!-- create an instance of our DataProvider class -->
    <ObjectDataProvider x:Key="tblLOOPDataProvider" ObjectType="{x:Type local:tblLOOPDataProvider}"/>
    <!-- define the method which is invoked to obtain our data -->
    <ObjectDataProvider x:Key="LOOPEvents" ObjectInstance="{StaticResource tblLOOPDataProvider}" MethodName="GetData"/>
  </UserControl.Resources>

  <DockPanel DataContext="{Binding Source={StaticResource LOOPEvents}}">
    <dg:DataGrid ItemsSource="{Binding}" Name="dataGrid"/>
  </DockPanel>

    </UserControl>

此代码实际上有效。数据表中的记录正确显示在应用程序的视图中。问题是该控件的Visual Studio设计者认为存在问题,抱怨无法在命名空间中找到对象类型:ObjectType =&#34; {x:Type local:tblLOOPDataProvider}&#34;

命名空间确实存在,并且确实包含了类,正如代码工作所证明的那样。那么设计师会给出什么呢?

以下是错误消息的屏幕截图:

Screenshot showing VS complaint

这是tblLOOPDataProvider代码

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SDMAS.LOOPAnalyzer.Models.LOOPDataSetTableAdapters;

namespace SDMAS.LOOPAnalyzer.Models
{
  /// <summary>
  /// Provides a singleton instance of the LOOPDataSet
  /// </summary>
  public class LOOPDataProvider
  {
    private static LOOPDataSet _loopDataSet;

    public static LOOPDataSet LOOPDataSet
    {
      get
      {
        if (_loopDataSet == null)
        {
          _loopDataSet = new LOOPDataSet();
        }
        return _loopDataSet;
      }
    }
  }

  /// <summary>
  /// A source of LOOP event objects
  /// </summary>
  public class tblLOOPDataProvider
  {
    private tblLOOPTableAdapter _adapter;

    public tblLOOPDataProvider()
    {
      LOOPDataSet dataset = LOOPDataProvider.LOOPDataSet;

      _adapter = new tblLOOPTableAdapter();
      _adapter.Fill(LOOPDataProvider.LOOPDataSet.tblLOOP);

      dataset.tblLOOP.tblLOOPRowChanged += new LOOPDataSet.tblLOOPRowChangeEventHandler(tblLOOPRowModified);
      dataset.tblLOOP.tblLOOPRowDeleted += new LOOPDataSet.tblLOOPRowChangeEventHandler(tblLOOPRowModified);
    }

    void tblLOOPRowModified(object sender, LOOPDataSet.tblLOOPRowChangeEvent e)
    {
      _adapter.Update(LOOPDataProvider.LOOPDataSet.tblLOOP);
    }

    public DataView GetData()
    {
      return LOOPDataProvider.LOOPDataSet.tblLOOP.DefaultView;
    }

  }
}

自从我第一次发布这个以来,我一直在攻击项目的各个部分,现在设计师根本没有显示Xaml。只是说装载设计师......并且似乎挂起了。

更多背景知识。我基于CodeProject上的Prism4Demo(David Veeneman)开始了这个项目。自从它开始以来,它已经发生了很大变化,迁移到Prism 6并更新了其他依赖项。该演示似乎是一个应用程序的一个很好的模板,它将有许多模块由不同的工作人员独立开发,可能只有一个专业程序员提供集成(而不是我)。创建设计器问题的类是&#34;工作区&#34;最终将连接到视图模型的模块之一的视图,视图模型又连接到由表示SQL服务器上的LOOP事件数据表的DataSet组成的模型。在当前的学习步骤中,我已将服务器数据表连接到DataSet,我在工作区视图中直接显示而没有中间的视图模型(除了设计器问题,它正在工作)。我的代码基于互联网示例,我一直都不了解,但已经能够开展工作。所以我还不了解LOOPDataProvider类复杂性的原因,或者在Xaml中使用Resources。

所以我继续研究MVVM结构,我的下一步是将基于DataSet的模型连接到视图模型,将视图模型连接到视图。

0 个答案:

没有答案