Как получить родительский визуальный размер в XamlCompositionBrushBase?
Я создаю класс, унаследованный от XamlCompositionBrushBase, и хочу узнать размер визуализации визуала, к которому присоединена кисть, когда она подключена OnConnected
,
Мне нужна эта информация, чтобы создать поверхность в моей композиции размером с визуальное изображение, чтобы не только иметь правильную плотность пикселей, но и отображать координаты визуала в пространстве поверхности.
то есть, если у меня есть координаты 50, 75, мне нужно знать ширину / высоту визуала, чтобы сопоставить местоположение поверхности с этим местоположением на визуале.
Так как кисть является объектом зависимости, я попытался использовать var parent = VisualTreeHelper.GetParent(this);
но это бросило исключение:
Произошло исключение System.Exception HResult=0x8000FFFF
Сообщение = катастрофический сбой (исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED))
Источник =
Возможно ли это без использования присоединенного свойства родительского UIElement?
Спасибо
1 ответ
Вы не можете - потому что кисть может быть подключена к нескольким визуальным элементам одновременно, на самом деле понятия "размер" не существует. Ну, во всяком случае, не на этом верхнем уровне XAML в UWP.
А так как кисти можно использовать в словарях ресурсов и, следовательно, применять в качестве одного и того же экземпляра в нескольких местах, каждый из которых имеет разные визуальные размеры, вы действительно не хотите разбираться с этим, так как вы почти наверняка нарушите любое использование кисти в ресурсный словарь.
(Что да, это расстраивает.)