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
Importare un servizio esterno in .NET Aspire
Creare agenti facilmente con Azure AI Agent Service
Configurare OpenAI in .NET Aspire
Ridurre il reflow cambiando il CSS
Importare repository da Bitbucket a GitHub Enterprise Cloud
Configurare e gestire sidecar container in Azure App Service
Scrivere selettori CSS più semplici ed efficienti con :is()
Implementare il throttle in JavaScript
Recuperare gli audit log in Azure DevOps
Selettore CSS :has() e i suoi casi d'uso avanzati
Gestire progetti NPM in .NET Aspire
Conoscere il rendering Server o WebAssembly a runtime in Blazor
I più letti di oggi
- Inserire le news di Punto Informatico nel proprio sito
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- The Agentic Day - Milano
- Percorsi relativi in pagine e user control ASP.NET
- Usare ASP.NET Identity per autenticare i client di un'applicazione ASP.NET Web API
- Creare un templated component per Blazor


