Come abbiamo visto per altri contesti, come ad esempio i Behaviour, l'SDK di Expression Blend mette a disposizione una serie di librerie con le quali possiamo aggiungere una serie di funzionalità ai nostri progetti Silverlight.
Nell'assembly Microsoft.Expression.Drawing.dll, presente solitamente in
\Program Files (x86)\Microsoft SDKs\Expression\Blend\Silverlight\v4.0\Libraries\Microsoft.Expression.Drawing.dll, possiamo trovare il controllo Callout che ci permette di inserire vignette di diverse forme e ampiamente personalizzabili.
Dopo aver registrato, come di consueto, il namespace xml sullo schema "http://schemas.microsoft.com/expression/2010/drawing", l'utilizzo del controllo è estremamente semplice:
<UserControl x:Class="SilverlightItalia._128.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing"
mc:Ignorable="d">
<Grid x:Name="LayoutRoot"
Background="White">
<ed:Callout AnchorPoint="0,1"
CalloutStyle="Oval"
FontSize="15"
Stroke="#FF4395A5"
Width="150"
Height="70"
Margin="11,13,0,0">
<ed:Callout.Fill>
<LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
<GradientStop Color="#FF53C7DD"
Offset="0" />
<GradientStop Color="White"
Offset="1" />
</LinearGradientBrush>
</ed:Callout.Fill>
<ContentControl>
<TextBlock Text="Oval" />
</ContentControl>
</ed:Callout>CallOut è un CompositeContentShape, classe astratta che eredita a sua volta da ContentControl. Per questo motivo un CallOut può mostrare a video qualunque altro oggetto vogliamo.
Con la proprietà CalloutStyle possiamo scegliere le quattro forme predefinite: Oval, RoundedRectangle, Rectangle e Cloud.
Di seguito alcuni esempi:

Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ridurre il reflow cambiando il CSS
Gestire progetti NPM in .NET Aspire
Gestione delle issue type con GitHub
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Effettuare la ricerca di testo nascosto in una pagina web con Javascript
Nuova modale riconnessione Blazor
Gestire progetti .NET + React in .NET Aspire
Creare comandi nella dashboard .NET Aspire
Configuratione e utilizzo .NET Aspire CLI
Definire il colore di una scrollbar HTML tramite CSS
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Configurare automaticamente un webhook in Azure DevOps
I più letti di oggi
- Future Dev Day - Milano
- Global Azure 2026 - ASPItalia.com - Milano
- Meno password, meno segreti, meno rischio. Al Global Azure 2026 di ASPItalia.com, Stefano Mostarda parlerà di Azure Managed Identity e di come adottare un approccio zero credentials per far comunicare in modo sicuro i servizi cloud, senza gestire credenziali nel codice o nelle pipeline. È uno dei pattern raccomandati da Microsoft per ridurre il carico operativo e migliorare la sicurezza. Milano, 16 aprile 2026. #GlobalAzure #Azure #ManagedIdentity #Security #ASPItalia https://aspit.co/globalazure-26
- Evitare la compressione degli artefatti in un workflow di GitHub
- Utilizzare ExecuteUpdate per aggiornare colonne JSON in Entity Framework
- Utilizzare noopener e noreferrer nei link HTML
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Eseguire i pre-commit hook di git con dependabot




