为什么我不能在资源字典中使用此命令?

时间:2013-10-25 06:26:48

标签: c# wpf xaml resourcedictionary

我不能为我的生活找出为什么我不能在这本词典中创建我的课程。 Intellisense没有拿起我的WindowCommand<T>课程。我检查了程序集名称,它看起来是正确的,名称空间中也没有拼写错误。是什么让它窒息?

WindowCommand.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;

using Ninject;
using Premier;
using Premier.View;

namespace Premier.Command
{
    public class WindowCommand<T> : Command where T : Window
    {
        private Func<bool> focus;
        private int instantiationCount;

        public bool IsDialog { get; set; }
        public bool Multiple { get; set; }

        public WindowCommand()
        {
        }

        public override bool CanExecute(object parameter)
        {
            return true;
        }

        public override void Execute(object parameter)
        {
            var instantiatedOnce = instantiationCount > 0;

            if (!Multiple && instantiatedOnce)
            {
                focus();
                return;
            }

            instantiationCount++;

            var w = App.Kernel.Get<T>();
            w.Closed += (s, e) => instantiationCount--;
            focus = w.Focus;

            if (IsDialog)
                w.ShowDialog();
            else
                w.Show();
        }
    }
}

Windows.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:c="clr-namespace:Premier.Command;assembly=PremierAutoDataExtractor"
                    xmlns:v="clr-namespace:Premier.View;assembly=PremierAutoDataExtractor"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <c:WindowCommand x:Key="ReportsPurchased" x:TypeArguments="v:PurchasedReportsView" />
</ResourceDictionary>

1 个答案:

答案 0 :(得分:2)

x:TypeArguments非根XAML元素上的XAML 2006(xml名称空间http://schemas.microsoft.com/winfx/2006/xaml/presentation)不支持XAML指令。如果要在非根XAML元素上使用x:TypeArguments,则应使用XAML2009(xml名称空间http://schemas.microsoft.com/netfx/2009/xaml/presentation)。但是,它仅支持未编译的松散XAML。

来自MSDN网页的文字:

  

在WPF中以及针对.NET Framework 4时,您可以使用XAML 2009   与x:TypeArguments一起使用的功能,但仅适用于松散的XAML(XAML   这不是标记编译的)。用于WPF的标记编译的XAML和   BAML形式的XAML目前不支持XAML 2009关键字和   特征。如果需要标记编译XAML,则必须进行操作   在“XAML 2006和WPF Generic XAML”中提到的限制下   用法“部分。

因此,我担心,您无法在资源词典中使用WindowCommand

链接到MSDN页面,了解有关x:TypeArguments指令的更多信息。