我不能为我的生活找出为什么我不能在这本词典中创建我的课程。 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>
答案 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
指令的更多信息。