WinRT è un Framework relativamente giovane e, anche se nato dall'esperienza maturata con WPF, ha perso alcune comode proprietà di quest'ultimo.
Una delle feature sncanti è la possibilità di tagliare il contenuto che fuoriesce dal suo contenitore.
In pratica, si tratta di una tecnica che permette di impostare la proprietà Clip di un oggetto, creando una RectangleGeometry con le esatte dimensioni dello stesso.
namespace MyCodeNamespace { public class Clip { public static bool GetToBounds(DependencyObject depObj) { return (bool)depObj.GetValue(ToBoundsProperty); } public static void SetToBounds(DependencyObject depObj, bool clipToBounds) { depObj.SetValue(ToBoundsProperty, clipToBounds); } public static readonly DependencyProperty ToBoundsProperty = DependencyProperty.RegisterAttached("ToBounds", typeof(bool), typeof(Clip), new PropertyMetadata(false, OnToBoundsPropertyChanged)); private static void OnToBoundsPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { FrameworkElement fe = d as FrameworkElement; if (fe != null) { ClipToBounds(fe); fe.Loaded += new RoutedEventHandler(fe_Loaded); fe.SizeChanged += new SizeChangedEventHandler(fe_SizeChanged); } } private static void ClipToBounds(FrameworkElement fe) { if (GetToBounds(fe)) { fe.Clip = new RectangleGeometry() { Rect = new Rect(0, 0, fe.ActualWidth, fe.ActualHeight) }; } else { fe.Clip = null; } } static void fe_SizeChanged(object sender, SizeChangedEventArgs e) { ClipToBounds(sender as FrameworkElement); } static void fe_Loaded(object sender, RoutedEventArgs e) { ClipToBounds(sender as FrameworkElement); } } }
Il cuore di tutto lo script è il metodo ClipToBounds, dove viene creata la RectangleGeometry. L'utilizzo del codice è semplicissimo, grazie alla creazione dell'attached property ToBounds.
<Border myNameSpace:Clip.ToBounds="true"> ... </Border>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
annunciato MAUI (.NET Multi-platform App UI), il successore di #xamarin in #net5, che integrerà un toolkit per costruire app con UI per #windows10, #macos, #ios e #android https://aspit.co/b1m #msbuild
Blazor e il pattern Model-View-ViewModel
Creare un componente Button in Blazor per operazioni asincrone
Effettuare il multibinding in un'applicazione Xamarin Forms
Utilizzare la libreria Ngx-take-until-destroy per eliminare le subscription in un component
Blazor <3 Javascript
Rendering di raw HTML in Blazor
Invocare trigger non HTTP delle Azure Function durante lo sviluppo
Realizzare un effetto gradiente tramite composition API nella Universal Windows Platform
Recuperare un Azure Storage account cancellato
#MAUI per sviluppare applicazioni #Windows e #XPlatf con #net5 con @leoncini117 Seguiteci live su #aspilive da http://aspit.co/ReBuild-20
Creare un effetto di ombra sui controlli della Universal Windows Platform