C# WPF设计师说;“创建项目以更新设计视图”;虽然不需要

C# WPF设计师说;“创建项目以更新设计视图”;虽然不需要,c#,wpf,C#,Wpf,所以这张照片很能自我解释: RowNumberConverter确实存在于同一名称空间中,但Visual Studio愚蠢地说它不存在! 我确实清理了解决方案,应用程序构建和运行都没有问题,但我看不到设计师!这一切都是突然发生的,没有任何理由,也不知道为什么 顺便说一句,这是一个转换器类,用于显示EntityFramework绑定数据网格中的行号 ‌ ‌ ‌ 更新: 转换器文件(RowNumberConverter.cs): 使用系统; 使用System.Collections.Generic

所以这张照片很能自我解释:

RowNumberConverter确实存在于同一名称空间中,但Visual Studio愚蠢地说它不存在! 我确实清理了解决方案,应用程序构建和运行都没有问题,但我看不到设计师!这一切都是突然发生的,没有任何理由,也不知道为什么

顺便说一句,这是一个转换器类,用于显示EntityFramework绑定数据网格中的行号

‌ ‌ ‌ 更新:

转换器文件(RowNumberConverter.cs):

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Controls;
使用System.Windows.Data;
名称空间MyProject
{
类别RowNumberConverter:IMultiValueConverter
{
#区域IMultiValueConverter成员
公共对象转换(对象[]值,类型targetType,对象参数,System.Globalization.CultureInfo区域性)
{
//获取网格和项目
对象项=值[0];
DataGrid grid=值[1]为DataGrid;
int index=grid.Items.IndexOf(item);
返回(索引<0)?“”:(索引+1).ToString();
}
公共对象[]转换回(对象值,类型[]目标类型,对象参数,System.Globalization.CultureInfo区域性)
{
抛出新的NotImplementedException();
}
#端区
}
}

这是一个很长很长时间以来都存在的问题。您需要将构建类型设置为“任意CPU”或x86,而不是x64。这是因为(由于没有人理解的原因),由于VS是由x86代码构建的,所以它无法在设计器中显示x64代码。将您的项目(临时)切换到x86,重新编译,然后重新启动,它将显示出来

这张照片很能自我解释“不,不是。IntelliSense从代码中获取它并不意味着设计者可以使用编译后的版本。它是在另一个组件中还是在同一个组件中?如果是另一个程序集-该程序集是否针对相同的.Net版本?能否显示
RowNumberConverter
的xaml以及命名空间定义。即使C#名称空间相同,如果它在另一个程序集中,您也需要一个单独的XML名称空间。@ManfredRadlwimmer它是完全相同的.NET版本、相同的解决方案、相同的项目、相同的名称空间、简单的.cs转换器类文件…@MattBeldon它不是xaml,而是.cs转换器类文件,我将用.cs文件更新这个问题。不知道为什么没有人投票支持这个答案。这是唯一有效的解决方案。无需来回切换,无需清洗或重建整个解决方案。只需按照建议使用构建类型“anycpu”构建项目本身。有时,人们应该更多地庆祝“获奖者”。是的,我在许多不同的帖子中尝试了所有的解决方案,这是唯一的解决方案。嗯,我确实在微软工作。我向VS负责人honcho询问了这件事,并从他那里得到了答案。嘿。
任何CPU
对我来说都不起作用-但是
x86
可以工作!这可能会发生,因为项目中有非托管的
x64
引用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Data;

namespace MyProject
{
    class RowNumberConverter : IMultiValueConverter
    {
        #region IMultiValueConverter Members

        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {

            //get the grid and the item
            Object item = values[0];
            DataGrid grid = values[1] as DataGrid;

            int index = grid.Items.IndexOf(item);

            return (index < 0) ? "" : (index + 1).ToString();
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}