Как получить родительский визуальный размер в XamlCompositionBrushBase?

Я создаю класс, унаследованный от XamlCompositionBrushBase, и хочу узнать размер визуализации визуала, к которому присоединена кисть, когда она подключена OnConnected,

Мне нужна эта информация, чтобы создать поверхность в моей композиции размером с визуальное изображение, чтобы не только иметь правильную плотность пикселей, но и отображать координаты визуала в пространстве поверхности.

то есть, если у меня есть координаты 50, 75, мне нужно знать ширину / высоту визуала, чтобы сопоставить местоположение поверхности с этим местоположением на визуале.

Так как кисть является объектом зависимости, я попытался использовать var parent = VisualTreeHelper.GetParent(this); но это бросило исключение:

Произошло исключение System.Exception HResult=0x8000FFFF
Сообщение = катастрофический сбой (исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED))
Источник =

Возможно ли это без использования присоединенного свойства родительского UIElement?

Спасибо

1 ответ

Вы не можете - потому что кисть может быть подключена к нескольким визуальным элементам одновременно, на самом деле понятия "размер" не существует. Ну, во всяком случае, не на этом верхнем уровне XAML в UWP.

А так как кисти можно использовать в словарях ресурсов и, следовательно, применять в качестве одного и того же экземпляра в нескольких местах, каждый из которых имеет разные визуальные размеры, вы действительно не хотите разбираться с этим, так как вы почти наверняка нарушите любое использование кисти в ресурсный словарь.

(Что да, это расстраивает.)

Другие вопросы по тегам