Uwp 如何在XamlCompositionBrushBase中检索父级视觉大小?

Uwp 如何在XamlCompositionBrushBase中检索父级视觉大小?,uwp,winrt-xaml,windows-composition-api,xaml-composition,Uwp,Winrt Xaml,Windows Composition Api,Xaml Composition,我正在创建一个继承自的类,并希望知道画笔连接到连接的OnConnected中时所附着的视觉对象的渲染大小 我需要这些信息在我的构图中创建一个与我的视觉大小相同的曲面,以便不仅具有正确的像素密度,而且能够从视觉坐标映射到曲面空间 i、 e.如果我有坐标50,75,我需要知道视觉的宽度/高度,以便将曲面位置映射到视觉上的该位置 由于画笔是一个依赖对象,我尝试使用var parent=visualtreeheloper.GetParent(this)但引发了异常: 发生系统异常HResult=0x80

我正在创建一个继承自的类,并希望知道画笔连接到连接的
OnConnected
中时所附着的视觉对象的渲染大小

我需要这些信息在我的构图中创建一个与我的视觉大小相同的曲面,以便不仅具有正确的像素密度,而且能够从视觉坐标映射到曲面空间

i、 e.如果我有坐标50,75,我需要知道视觉的宽度/高度,以便将曲面位置映射到视觉上的该位置

由于画笔是一个依赖对象,我尝试使用
var parent=visualtreeheloper.GetParent(this)但引发了异常:

发生系统异常HResult=0x8000FFFF
消息=灾难性故障(来自HRESULT的异常:0x8000FFFF (E_意外))
来源=

如果不在父元素上使用附加属性,是否可以执行此操作


谢谢

你不能-因为画笔可以同时连接到多个视觉效果,所以实际上没有“大小”的概念。嗯,无论如何,在UWP的XAML顶层不是这样的

由于笔刷可以在资源字典中使用,因此可以作为同一实例应用于多个位置,每个位置具有不同的视觉大小,因此您确实不想在这个问题上费尽心机,因为您几乎肯定会破坏资源字典中笔刷的任何用法


(是的,令人沮丧。)

内部必须有一些概念,否则LinearGradientBrush的绝对映射模式将无法工作。内部确定,但我们无法访问它们。WPF就是这样做的:(GetTileBrushMapping方法)调用它的地方我不能说。UWP并不完全相同,但它的理念是相同的——不幸的是,它都是内部的:/