@@ -293,6 +293,12 @@ protected override void SetElementChildVisual(AttachedShadowElementContext conte
293
293
else
294
294
{
295
295
base . SetElementChildVisual ( context ) ;
296
+
297
+ // Reset context.SpriteVisual.Size and RelativeSizeAdjustment to default values
298
+ // as they may be changed in the block above.
299
+ context . SpriteVisual . Size = Vector2 . Zero ;
300
+ context . SpriteVisual . RelativeSizeAdjustment = Vector2 . One ;
301
+
296
302
context . RemoveAndDisposeResource ( OpacityMaskVisualSurfaceResourceKey ) ;
297
303
context . RemoveAndDisposeResource ( OpacityMaskSurfaceBrushResourceKey ) ;
298
304
context . RemoveAndDisposeResource ( OpacityMaskVisualResourceKey ) ;
@@ -305,25 +311,33 @@ protected internal override void OnSizeChanged(AttachedShadowElementContext cont
305
311
{
306
312
Vector2 sizeAsVec2 = newSize . ToVector2 ( ) ;
307
313
308
- CompositionRoundedRectangleGeometry geometry = context . GetResource ( RoundedRectangleGeometryResourceKey ) ;
309
- if ( geometry != null )
314
+ if ( context . TryGetResource ( RoundedRectangleGeometryResourceKey , out CompositionRoundedRectangleGeometry geometry ) )
310
315
{
311
316
geometry . Size = sizeAsVec2 ;
312
317
}
313
318
314
- CompositionVisualSurface visualSurface = context . GetResource ( VisualSurfaceResourceKey ) ;
315
- if ( geometry != null )
319
+ if ( context . TryGetResource ( VisualSurfaceResourceKey , out CompositionVisualSurface visualSurface ) )
316
320
{
317
321
visualSurface . SourceSize = sizeAsVec2 ;
318
322
}
319
323
320
- ShapeVisual shapeVisual = context . GetResource ( ShapeVisualResourceKey ) ;
321
- if ( geometry != null )
324
+ if ( context . TryGetResource ( ShapeVisualResourceKey , out ShapeVisual shapeVisual ) )
322
325
{
323
326
shapeVisual . Size = sizeAsVec2 ;
324
327
}
325
328
329
+ if ( context . TryGetResource ( OpacityMaskVisualSurfaceResourceKey , out CompositionVisualSurface opacityMaskVisualSurface ) )
330
+ {
331
+ opacityMaskVisualSurface . SourceSize = sizeAsVec2 + new Vector2 ( MaxBlurRadius * 2 ) ;
332
+ }
333
+
334
+ if ( InnerContentClipMode is InnerContentClipMode . CompositionMaskBrush )
335
+ {
336
+ context . SpriteVisual . Size = sizeAsVec2 ;
337
+ }
338
+
326
339
UpdateShadowClip ( context ) ;
340
+ UpdateVisualOpacityMask ( context ) ;
327
341
328
342
base . OnSizeChanged ( context , newSize , previousSize ) ;
329
343
}
0 commit comments