秋のクリエイターアップデートSDKは、マークアップ拡張クラスを追加しました。 https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.markup.markupextensionUWP 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プロパティを設定します"ここまでは順調ですね。
ただし、ProvideValueオーバーライドが呼び出されることはありません。IconGlyphのTemplateBindingにアクセスすると、実際にはマークアップ拡張から値を取得しようとする試みは一切ありません。System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component. at Windows.UI.Xaml.FrameworkElement.MeasureOverride(Size availableSize)
が表示されます。
実際に何が起きているのかは、ProvideValueメソッドを呼び出す代わりに、実際にはプロパティ値もMarkupExtensionのインスタンスに設定しています。これは非常に望ましくないものでも、マークアップ拡張がうまくいくとは思わないでしょう。
だから私はおそらくこれに多くの答えはないだろうと知っていますが、誰もこのクラスで遊んでいて、UWPでうまく動作していますか?これは期待されていますか?私は私の使い方に戸惑っていますか?
(ので、おそらく私は...だ前に私が実際にどのような形態でMarkupExtensionを使用したことがない)
不足しているマニュアルはあるかもしれません[ここにある](https://docs.microsoft.com/en-us/dotnet/framework/xaml-services/markup-extensions-for-xaml-overview)私はそれの多くを理解していませんが、属性を適用することが私が試してみたい最初のことです。 –