我正在尝试学习Catel MVVM,通过让最简单的Catel实例在VS Express 2012上运行并不断出现错误。我认为我的问题在于我的“使用”语句,引用或我的XAML中的标题。自动生成的文件写入违规行,如下所示在MainWindow.g.cs中。代码文件非常短,所以我已将它们包括在内。
模型,视图模型和视图在一个解决方案下分为三个项目。
我一直收到以下警告并附带错误:
'c:... \ MainWindow.g.cs'中的'Catel.Windows.DataWindow'类型 与导入类型'Catel.Windows.DataWindow'冲突 'C:\ Catel.MVVM.dll'。使用中定义的类型 'C:... \ MainWindow.g.cs'。
和错误:
Catel.Windows.DataWindow< ViewModels.MainWindowViewModel>是 废弃:'请使用'Catel.Windows.DataWindow'代替。将会 已删除版本“4.0”。' C:... \ MyFirstCatel \ OBJ \调试\ MainWindow.g.cs
MainWindow.xaml
<Windows:DataWindow
x:Class="Catel.Windows.DataWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:MainWindowViewModel="clr-namespace:ViewModels"
xmlns:Windows="clr-namespace:Catel.Windows;assembly=Catel.MVVM"
x:TypeArguments="MainWindowViewModel:MainWindowViewModel"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock>Hello world!</TextBlock>
</Grid>
</Windows:DataWindow>
MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Catel.Windows;
namespace MyFirstCatel
{
public partial class MainWindow : Catel.Windows.DataWindow
{
public MainWindow()
{
InitializeComponent();
}
}
}
MainWindowViewModel.cs
using System.Windows;
using Catel.MVVM;
namespace ViewModels
{
public class MainWindowViewModel : ViewModelBase
{
public MainWindowViewModel()
: base()
{
}
public override string Title { get { return "View model title"; } }
public string Slug
{
get { return GetValue<string>(SlugProperty); }
set { SetValue(SlugProperty, value); }
}
public static readonly Catel.Data.PropertyData SlugProperty = RegisterProperty("Slug", typeof(string), null);
}
}
在MainWindow.g.cs
namespace Catel.Windows {
public partial class DataWindow : Catel.Windows.DataWindow<ViewModels.MainWindowViewModel>, System.Windows.Markup.IComponentConnector
{
private bool _contentLoaded;
... code removed for post ....
}
}
答案 0 :(得分:0)
只有一件事是错的。在xaml定义中,您仍然使用指定vm类型的旧方法。删除x:TypeArguments,错误应该消失。