Como alguém usa a classe UWP MarkupExtension?
O SDK de atualização de criadores de outono adicionou uma classe de extensão de marcação, ótimo.https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.markup.markupextension
Então, eu crio um e substituo e o método "ProvideValue".
public class MDL2 : MarkupExtension
{
...
public string Target { get; set; }
protected override object ProvideValue()
{
...
}
}
Eu tento usá-lo como tal em um estilo:
<Setter Property="IconGlyph" Value="{u:MDL2 Target='Delete'}" />
Agora, isso chamará adequadamente o construtor para minha extensão MDL2 e definirá a propriedade Target como um valor de seqüência de caracteres "Excluir". Por enquanto, tudo bem.
Exceto que a substituição de ProvideValue nunca é chamada e, agora, ao acessar o TemplateBinding para IconGlyph, receboSystem.Runtime.InteropServices.COMException: Error HRESULT E_F,AIL has been returned from a call to a COM component. at Windows.UI.Xaml.FrameworkElement.MeasureOverride(Size availableSize)
aparentemente sem nenhuma tentativa de obter o valor das extensões de marcação.
O que realmente está acontecendo é que, em vez de Invocar o método ProvideValue, ele está definindo o valor da propriedade também como a instância do MarkupExtension ... o que não é muito o que eu quero e nem como eu esperaria que as extensões de marcação funcionassem.
Então, eu sei que provavelmente não haverá muitas respostas para isso, mas alguém já brincou com essa classe e conseguiu que ela funcionasse bem na UWP? Isso é esperado? Estou sendo idiota no meu uso?
(Na verdade, nunca usei o MarkupExtension de qualquer forma antes, talvez eu esteja ...)