Fall Creators 업데이트 SDK에 Markup Extension 클래스가 추가되었습니다. 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 확장에 대한 생성자를 호출, 그리고 문자열 값으로 대상 속성을 설정합니다 "삭제 ". 여태까지는 그런대로 잘됐다.
제외하고 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). 나는 그것의 많은 것을 이해하지 못한다. 그러나 애트리뷰트를 적용하는 것이 내가 시도 할 첫 번째 것이다. –