如果我扩展现有对象,例如DataGrid
:
public class CustomDataGrid : DataGrid
{
static CustomDataGrid()
{
CommandManager.RegisterClassCommandBinding(
typeof(CustomDataGrid),
new CommandBinding(ApplicationCommands.Paste,
new ExecutedRoutedEventHandler(OnExecutedPaste),
new CanExecuteRoutedEventHandler(OnCanExecutePaste)));
}
...
在xaml方面,如果我尝试使用<CustomDataGrid/>
,我会得到类似CustomDataGrid is not supported in a Windows Presentation Foundation (WPF) project
的内容。那么我如何在xaml端实际使用扩展类呢?
答案 0 :(得分:2)
您需要按名称空间引用该类。这包括在Xaml文件的顶部添加名称空间声明,然后在控件元素中使用该名称空间。
如果我们假设您的CustomDataGrid
位于名为Rhubarb
的命名空间中,则在与您正在编写的Xaml相同的程序集中,您需要将此属性添加到您的Xaml文件中的根标记(以及其他xmlns
属性):
xmlns:rhubarb="clr-namespace:Rhubarb"
然后,在声明网格的地方,请改用此元素:
<rhubarb:CustomDataGrid />
如果您的cod位于单独的(引用的)程序集中,则需要修改名称空间声明:
xmlns:rhubarb="clr-namespace:Rhubarb;assembly=NameOfYourAssembly"
(请注意,程序集名称后面没有.dll
后缀。)