0

我正在尝试通过让最简单的 Catel 裸机示例在 VS Express 2012 上工作并不断出错来学习 Catel MVVM。我认为我的问题在于我的“使用”语句、引用或 XAML 中的标头。一个自动生成的文件在 MainWindow.g.cs 中写入了如下所示的违规行。代码文件非常短,因此我将它们包含在内。

模型、视图模型和视图在一个解决方案下分为三个项目。

  • 型号- 暂时空白
  • ViewModel -MainWindowViewModel(还没有属性)
  • 查看-MainWindow.xmal、MainWindow.xmal.cs(还没有控件或属性)

    我不断收到以下警告并伴有错误:

    'c:...\MainWindow.g.cs' 中的类型 'Catel.Windows.DataWindow' 与 'c:...\Catel.MVVM.dll' 中的导入类型 'Catel.Windows.DataWindow' 冲突。使用 'c:...\MainWindow.g.cs' 中定义的类型。

    和错误:

    Catel.Windows.DataWindow < ViewModels.MainWindowViewModel > 已过时:'请改用'Catel.Windows.DataWindow'。将在版本“4.0”中删除。C:...\MyFirstCatel\obj\Debug\MainWindow.g.cs

    主窗口.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>
    

    主窗口.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 ....
    
    }
    

    }

  • 4

    1 回答 1

    0

    只有一件事是错误的。在您的 xaml 定义中,您仍然使用指定 vm 类型的旧方法。删除 x:TypeArguments 并且错误应该消失。

    于 2013-06-08T21:18:14.317 回答