0

我一生都无法弄清楚为什么我不能在这本词典中创建我的课程。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>
4

1 回答 1

2

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

来自 MSDN 页面的文本:

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

所以,恐怕你不能WindowCommand在资源字典中使用你的。

链接到MSDN页面以获取有关x:TypeArguments指令的更多信息。

于 2013-10-25T08:09:45.217 回答