Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MarkupExtension中的DepedencyProperty

MarkupExtension中的DepedencyProperty
EN

Stack Overflow用户
提问于 2009-11-30 05:50:50
回答 3查看 3.2K关注 0票数 11

MarkupExtension派生类中可以有一个DependencyProperty吗?

代码语言:javascript
运行
AI代码解释
复制
public class GeometryQueryExtension : MarkupExtension
{
    public XmlDataProvider Source { get; set; }

    public string XPath { get; set; }

    public static readonly DependencyProperty ArgumentProperty = DependencyProperty.RegisterAttached(
        "Argument",
        typeof(string),
        typeof(GeometryQueryExtension)); // this wont work because GeometryQueryExtension is not a DependencyProperty

    public string Argument
    {
        get
        {
            return (string)GetValue(ArgumentProperty); // this wont even compile because GeometryQueryExtension doesnt derive from a class which has GetValue
        }
        set
        {
            SetValue(ArgumentProperty,value);// this wont even compile because GeometryQueryExtension doesnt derive from a class which has SetValue
        }
    }
}

下面的代码片段中使用了该扩展。

代码语言:javascript
运行
AI代码解释
复制
<Label.Content>
    <local:GeometryQueryExtension Source="{StaticResource shapesDS}">
        <local:GeometryQueryExtension.XPath>
            /Shapes/Geometry/{0}
        </local:GeometryQueryExtension.XPath>
        <local:GeometryQueryExtension.Argument>
            <Binding XPath="Geometry"/> <!-- will throw exception when processing this bind -->
        </local:GeometryQueryExtension.Argument>
    </local:GeometryQueryExtension>
</Label.Content>

有没有可能构建这样一个扩展,或者我是不是找错了地方?(上面的代码无法编译和运行,但我在这里发布它是为了最好地说明这个问题)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-30 08:16:50

不能,您只能向从DependencyObject派生的类添加依赖项属性,MarkupExtention直接从Object派生

票数 5
EN

Stack Overflow用户

发布于 2010-07-23 16:18:42

是啊..这是一个丑陋的问题..然而,它有一个简单而非直观的答案。创建另一个标记扩展来获取静态资源。因此,与其使用{StaticResource shapesDS}

您将创建一个名为DataSetLocator的新MarkupExtension

我不打算写代码,但是Provide值需要根据名称或其他输入返回数据集。

然后更改xaml以使扩展模块使用数据集定位器扩展模块示例Source="{DataSetLocator name=shapesDS }"

遗憾的是,扩展没有扩展DependencyProperty,但它们确实没有。

票数 0
EN

Stack Overflow用户

发布于 2012-10-11 14:33:04

只需使用IMarkupExtension而不是MarkupExtension,就可以扩展DependencyObject。至少在Silverlight 5中你可以,但我认为WPF也有这个功能。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1818033

复制
相关文章
如何编写 WPF 的标记扩展 MarkupExtension,即便在 ControlTemplate/DataTemplate 中也能生效
发布于 2018-05-29 12:56 更新于 2018-05-30 01:34
walterlv
2018/09/18
1.7K0
WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了
如果你写了一个 MarkupExtension 在 XAML 当中使用,你会发现你在 MarkupExtension 中定时的属性是无法使用 XAML 绑定的,因为 MarkupExtension 不是一个 DependencyObject。
walterlv
2020/02/10
1.7K0
win10 uwp 自定义标记扩展
在 UWP 使用的 Binding 或 StaticResource 这些都是标记扩展,在 Windows 10 Fall Creators Update 版本号是 10.0.16299.0 和以上支持在 UWP 自定义标记扩展,也就是定义了一个可以在 xaml 使用的标记的方法
林德熙
2019/04/22
5700
[WPF]如何使用代码创建DataTemplate(或者ControlTemplate)
上一篇文章([UWP]如何使用代码创建DataTemplate(或者ControlTemplate))介绍了在UWP上的情况,这篇文章再稍微介绍在WPF上如何实现。
dino.c
2019/01/17
2.1K0
流畅设计 Fluent Design System 中的光照效果 RevealBrush,WPF 也能模拟实现啦!
发布于 2018-04-05 08:34 更新于 2018-05-29 12:56
walterlv
2018/09/18
8550
流畅设计 Fluent Design System 中的光照效果 RevealBrush,WPF 也能模拟实现啦!
[WPF]如何使用代码创建DataTemplate(或者ControlTemplate)
上一篇文章([UWP]如何使用代码创建DataTemplate(或者ControlTemplate))介绍了在UWP上的情况,这篇文章再稍微介绍在WPF上如何实现。
dino.c
2019/01/18
1.9K0
WPF 的 ElementName 在 ContextMenu 中无法绑定成功?试试使用 x:Reference!
发布于 2018-10-13 21:38 更新于 2018-10-14 04:25
walterlv
2020/02/10
3.2K0
DependencyProperty.UnsetValue 的正确打开方式
2017-10-10 15:21
walterlv
2018/09/18
9760
WPF 如何在静态资源定义字体大小
默认的 WPF 的字体大小的单位是像素,如果想要将字体大小使用 pt 点表示,写在 xaml 里面是直接添加 pt 后缀。但是此时如果在静态资源尝试定义的时候写上了 pt 将会在运行的时候提示无法转换
林德熙
2020/04/26
6340
WPF 如何在静态资源定义字体大小
Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能
说一下IHandle<T>实现多语言功能 因为Caliburn.Micro是基于MvvM的UI与codebehind分离, binding可以是双向的所以我们想动态的实现多语言切换很是方便今天我做一个
lpxxn
2018/01/31
8820
Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能
如何在 WPF 中获取所有已经显式赋过值的依赖项属性
获取 WPF 的依赖项属性的值时,会依照优先级去各个级别获取。这样,无论你什么时候去获取依赖项属性,都至少是有一个有效值的。有什么方法可以获取哪些属性被显式赋值过呢?如果是 CLR 属性,我们可以自己写判断条件,然而依赖项属性没有自己写判断条件的地方。
walterlv
2023/10/22
4000
WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换
WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换
独立观察员
2022/12/06
2.1K0
WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换
WPF 判断一个对象是否是设计时的窗口类型,而不是运行时的窗口
当我们对 Window 类型写一个附加属性的时候,在属性变更通知中我们需要判断依赖对象是否是一个窗口。但是,如果直接判断是否是 Window 类型,那么在设计器中这个属性的设置就会直接出现异常。
walterlv
2023/10/22
3690
DotNetCore 3.0 助力 WPF本地化
随着我们的应用程序越来越受欢迎,我们的下一步将要开发多语言功能。方便越来越多的国家使用我们中国的应用程序, 基于 WPF 本地化,我们很多时候使用的是系统资源文件,可是动态切换本地化,就比较麻烦了。 有没有一种方法既可以适用系统的资源文件,又能方便快捷的切换本地化呢?
梁规晓
2019/08/23
6470
DotNetCore 3.0 助力 WPF本地化
JS中的phototypeJS中的phototype
原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。
一个会写诗的程序员
2018/08/17
1.9K0
JS中的phototypeJS中的phototype
flink中的keyBy中的key
这个key是虚拟key,没有实体,所以不会返回。 其是从进来的流数据中选取的字段。 关键看这个虚拟key是什么类型。
CoreDao
2021/04/12
1.4K0
python中的urllib模块中的方法
urllib.request模块定义了一些打开URLs(一般是HTTP协议)复杂操作像是basic 和摘要模式认证,重定向,cookies等的方法和类。这个模块式模拟文件模块实现的,将本地的文件路径改为远程的url。因此函数返回的是类文件对象(file-like object)
py3study
2020/01/09
2.2K0
数据中的城市,城市中的数据
点击标题下「大数据文摘」可快捷关注 [今日3篇文章] 1.数据中的城市,城市中的数据 2.解密:“女博士”如何领导美帝神秘机构DARPA 3.2014年可穿戴设备之非官方报告 作者:凯尔·格雷科(Kael Greco) 译者:ilovesnoopy(北京大学光华学院硕士) 校对:EcnMcheDsgn (UCLA本科,MIT机械工程学博士) 独眼一点五 (华东师范大学中文系硕士) 摘自:译言 2007年年初,一群Google Earth的用户在圣地亚哥发现了一件奇怪的事情。在使用最新发布的卫星影像进行俯瞰时
大数据文摘
2018/05/22
1.3K0
python中for _ in range () 中'_'的意思
其中’_’ 是一个循环标志,也可以用i,j 等其他字母代替,下面的循环中不会用到,起到的是循环此数的作用 就像C语言中
狼啸风云
2019/09/29
3.5K0
makefile中的include的作用(makefile中的变量)
例子: 建立一个测试目录,在测试目录下建立一个名为sub的子目录 $ mkdir test $ cd test $ mkdir sub 在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件 建立一个简单的Makefile src=$(wildcard *.c ./sub/*.c) dir=$(notdir $(src)) obj=$(patsubst %.c,%.o,$(dir) ) all: @echo $(src) @echo $(dir) @echo $(obj) @echo “end” 执行结果分析: 第一行输出: a.c b.c ./sub/sa.c ./sub/sb.c wildcard把 指定目录 ./ 和 ./sub/ 下的所有后缀是c的文件全部展开。 第二行输出: a.c b.c sa.c sb.c notdir把展开的文件去除掉路径信息 第三行输出: a.o b.o sa.o sb.o 在$(patsubst %.c,%.o,$(dir) )中,patsubst把$(dir)中的变量符合后缀是.c的全部替换成.o, 任何输出。 或者可以使用 obj=$(dir:%.c=%.o) 效果也是一样的。 这里用到makefile里的替换引用规则,即用您指定的变量替换另一个变量。 它的标准格式是 $(var:a=b) 或 ${var:a=b} 它的含义是把变量var中的每一个值结尾用b替换掉a 今天在研究makefile时在网上看到一篇文章,介绍了使用函数wildcard得到指定目录下所有的C语言源程序文件名的方法,这下好了,不用手工一个一个指定需要编译的.c文件了,方法如下: SRC = $(wildcard *.c) 等于指定编译当前目录下所有.c文件,如果还有子目录,比如子目录为inc,则再增加一个wildcard函数,象这样: SRC = $(wildcard *.c) $(wildcard inc/*.c) 也可以指定汇编源程序: ASRC = $(wildcard *.S) 这样一来,makefile模板可修改的基本就是AVR名称和时钟频率了,其它的一般不用动了。
全栈程序员站长
2022/08/02
3.4K0

相似问题

UWP中的定制MarkupExtension

11

Silverlight MarkupExtension

10

IValueConverter与MarkupExtension

23

X: Silverlight中的共享MarkupExtension

10

.Net城域应用中的MarkUpExtension

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档