zoukankan      html  css  js  c++  java
  • [Avalon]如何实现自定义MarkupExtension.

    在Avalon中,微软提供了对XAML扩展的功能——MarkupExtension。按照文档以及参考了Binding,NullExtension类的实现,我认为只要自定一个类型从MarkupExtension类型继承,实现其中的抽象方法,就可以再XAML中使用如下的语法进行引用。

    类型定义:

    using System.Windows.Serialization;
    namespace MarkupExtensionNS
    {
        
    public class MyMarkupExtension : MarkupExtension
        {
            
    public MyMarkupExtension()
            {
            }

            
    public override object ProvideValue(object targetObject, object 
    targetProperty)
            {
                
    return "OK";
            }
        }
    }

    引用:

    <?Mapping XmlNamespace="CodeMapNS" ClrNamespace="MarkupExtensionNS" ?>
    <Window x:Class="MarkupExtensionNS.Window1"
        xmlns
    ="http://schemas.microsoft.com/winfx/avalon/2005"
        xmlns:x
    ="http://schemas.microsoft.com/winfx/xaml/2005"
        Text
    ="MarkupExtension"
        xmlns:c
    ="CodeMapNS"
        
    >
        
    <Grid>
            
    <TextBlock TextContent="{c:MyMarkupExtension}"/>
        
    </Grid>
    </Window>

    呵呵,看起来应该没有问题,相当于给TextBlock的TextContent附值"OK". 但是编译报错。如下:
    MS.Internal.Markup.XamlParseException: The value '{c:MyMarkupExtension}' is not a valid MarkupExtension expression. Could not resolve 'MyMarkupExtension' in namespace 'CodeMapNS'. 'MyMarkupExtension' must be a subclass of MarkupExtension. Line 9 Position 14.

    怀疑是MyMarkupExtension需要在XAML之前进行编译,我将MyMarkupExtension移到一个独立的Assembly中。错误依旧。郁闷中...

  • 相关阅读:
    局域网的组建方案
    网络的分类
    设置Windows的TCP/IP属性和内部网络号码
    在Windows8工作站上安装可靠多播协议
    在Windows Server 2012服务器上安装可靠多播协议
    【转】HTTP协议详解
    局域网的通信协议
    局域网的拓扑结构
    Shiro学习笔记(5)——web集成
    IT增值服务,客户案例(一)--山东青岛在职人士,2年.Net经验,转Java开发半年
  • 原文地址:https://www.cnblogs.com/Cajon/p/211487.html
Copyright © 2011-2022 走看看