gpt4 book ai didi

c# - 如何使用 UWP MarkupExtension 类?

转载 作者:行者123 更新时间:2023-11-30 15:17:11 25 4
gpt4 key购买 nike

Fall Creators 更新 SDK 添加了一个 Markup Extension 类,很棒。 https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.markup.markupextension

所以我创建了一个并覆盖了“ProvideValue”方法。

public class MDL2 : MarkupExtension
{
...

public string Target { get; set; }

protected override object ProvideValue()
{
...
}
}

我尝试以一种风格使用它:

<Setter Property="IconGlyph" Value="{u:MDL2 Target='Delete'}" />

现在,这将正确调用我的 MDL2 扩展的构造函数,并将 Target 属性设置为字符串值“Delete”。到目前为止一切顺利。

除此之外,从未调用 ProvideValue 覆盖,现在在访问 IconGlyph 的 TemplateBinding 时,我得到 System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component.
在 Windows.UI.Xaml.FrameworkElement.MeasureOverride(Size availableSize)
中,似乎没有尝试从标记扩展中实际获取值。

实际发生的不是调用 ProvideValue 方法,而是将属性值设置为 MarkupExtension 的实例...这不是我想要的,也不是我期望标记扩展的工作方式。

所以,我知道这个问题可能不会有太多答案,但是有没有人玩过这个类并让它在 UWP 中很好地工作?这是预期的吗?我的用法很愚蠢吗?

(我以前从未以任何形式实际使用过 MarkupExtension,所以也许我是......)

最佳答案

您需要添加 MarkupExtensionReturnType属性到你的类(class):

[MarkupExtensionReturnType(ReturnType = typeof(string))]
public class MDL2 : MarkupExtension
{

关于c# - 如何使用 UWP MarkupExtension 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47156782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com