如何扩展xaml对象?

时间:2015-03-03 17:41:25

标签: c# wpf xaml

如果我扩展现有对象,例如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端实际使用扩展类呢?

1 个答案:

答案 0 :(得分:2)

您需要按名称空间引用该类。这包括在Xaml文件的顶部添加名称空间声明,然后在控件元素中使用该名称空间。

如果我们假设您的CustomDataGrid位于名为Rhubarb的命名空间中,则在与您正在编写的Xaml相同的程序集中,您需要将此属性添加到您的Xaml文件中的根标记(以及其他xmlns属性):

xmlns:rhubarb="clr-namespace:Rhubarb"

然后,在声明网格的地方,请改用此元素:

<rhubarb:CustomDataGrid />

如果您的cod位于单独的(引用的)程序集中,则需要修改名称空间声明:

xmlns:rhubarb="clr-namespace:Rhubarb;assembly=NameOfYourAssembly"

(请注意,程序集名称后面没有.dll后缀。)