<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Big .net Blog</title>
        <link>http://ilbig.net/Default.aspx</link>
        <description>Tecnologie .net, amore a prima vista</description>
        <language>it-IT</language>
        <copyright>Rudes Luca</copyright>
        <generator>Subtext Version 2.1.0.5</generator>
        <image>
            <title>Big .net Blog</title>
            <url>http://ilbig.net/images/RSS2Image.gif</url>
            <link>http://ilbig.net/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Associare la pressione di un tasto a un Command (Binding KeyDown To Command)</title>
            <category>WPF</category>
            <category>WP7</category>
            <category>Silverlight</category>
            <category>Trigger - Behavior</category>
            <link>http://ilbig.net/archive/2010/11/24/ASSOCIARE-LA-PRESSIONE-DI-UN-TASTO-A-UN-COMMAND-BINDING.aspx</link>
            <description>&lt;p&gt;Spero si rivela utile associare determinate operazioni alla semplice pressione di un tasto, l’esempio più banale è quello della pressione del tasto invio in mentre si ha il focus su una textBox per avviare la ricerca. Per risolvere questo basta semplicemente crearsi un trigger che verifica che tasto è stato premuto e passargli il command da eseguire.&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #fba944"&gt;namespace &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Fm&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Silverlight&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;Controls        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{        &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Windows&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Windows&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Input&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Windows&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Interactivity&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;;        &lt;br /&gt;        &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt;        &lt;br /&gt;    /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Behavior per la gestione della pressione dell'invio        &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;        &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;public class &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;KeyDownCommandAction &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;: &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;TriggerBase&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;UIElement&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #c9c9bb"&gt;&lt;font style="background-color: #000000"&gt;&amp;gt;        &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: cyan"&gt;#region &lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;Fields        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;DependencyProperty &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CommandParameterProperty&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public static readonly &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;DependencyProperty &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CommandProperty&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;;        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion        &lt;br /&gt;        &lt;br /&gt;        #region &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;Construct        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;static &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;KeyDownCommandAction&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;()        &lt;br /&gt;        {         &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CommandParameterProperty &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;DependencyProperty&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Register&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #ca9292"&gt;"CommandParameter"&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #fba944"&gt;typeof&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;object&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;), &lt;/span&gt;&lt;span style="color: #fba944"&gt;typeof&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;KeyDownCommandAction&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;), &lt;/span&gt;&lt;span style="color: #fba944"&gt;null&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;);        &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CommandProperty &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;DependencyProperty&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Register&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #ca9292"&gt;"Command"&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #fba944"&gt;typeof&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;object&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;), &lt;/span&gt;&lt;span style="color: #fba944"&gt;typeof&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;KeyDownCommandAction&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;), &lt;/span&gt;&lt;span style="color: #fba944"&gt;null&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;);        &lt;br /&gt;        }         &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion        &lt;br /&gt;        &lt;br /&gt;        #region &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;Property        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt;        &lt;br /&gt;        /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Key da premere per richiamare l'evento        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;Key &lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;KeyPress        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{        &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;get&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;set&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;;        &lt;br /&gt;        }         &lt;br /&gt;        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt;        &lt;br /&gt;        /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Parameter per il command        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public object &lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;CommandParameter        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;{        &lt;br /&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #fba944"&gt;&lt;font style="background-color: #000000"&gt;get        &lt;br /&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{        &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #fba944"&gt;return this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;GetValue&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;KeyDownCommandAction&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CommandParameterProperty&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;);        &lt;br /&gt;            }         &lt;br /&gt;        &lt;br /&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #fba944"&gt;&lt;font style="background-color: #000000"&gt;set        &lt;br /&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{        &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;SetValue&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;KeyDownCommandAction&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CommandParameterProperty&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #fba944"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;);        &lt;br /&gt;            }         &lt;br /&gt;        }         &lt;br /&gt;        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt;        &lt;br /&gt;        /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Nome del command da richiamare        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public object &lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;Command        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;{        &lt;br /&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #fba944"&gt;&lt;font style="background-color: #000000"&gt;get        &lt;br /&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{        &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #fba944"&gt;return this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;GetValue&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;KeyDownCommandAction&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CommandProperty&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;);        &lt;br /&gt;            }         &lt;br /&gt;        &lt;br /&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #fba944"&gt;&lt;font style="background-color: #000000"&gt;set        &lt;br /&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{        &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;SetValue&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;KeyDownCommandAction&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CommandProperty&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #fba944"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;);        &lt;br /&gt;            }         &lt;br /&gt;        }         &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion        &lt;br /&gt;        &lt;br /&gt;        #region &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;Methods        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;protected override void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnAttached&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;()        &lt;br /&gt;        {         &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;AssociatedObject&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;KeyDown &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;+= &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnKeyDown&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;        &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;base&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnAttached&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;();        &lt;br /&gt;        }         &lt;br /&gt;        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;protected override void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnDetaching&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;()        &lt;br /&gt;        {         &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;AssociatedObject&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;KeyDown &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;-= &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnKeyDown&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;        &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;base&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnDetaching&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;();        &lt;br /&gt;        }         &lt;br /&gt;        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;        &lt;br /&gt;        /// &lt;/span&gt;&lt;span style="color: #7b987b"&gt;Verifica se il tasto premuto è quello desiderato &lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;        &lt;br /&gt;        /// &amp;lt;param name="s"&amp;gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;Controllo che ha generato l'evento&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;        &lt;br /&gt;        /// &amp;lt;param name="e"&amp;gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;Parametri dell'evento&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;private void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnKeyDown&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;object &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;s&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;KeyEventArgs &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;e&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;)        &lt;br /&gt;        {         &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;if &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;e&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Key &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;== &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;KeyPress&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;)        &lt;br /&gt;            {         &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;ICommand &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;cmd &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;ICommand&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;)&lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Command&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;        &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #fba944"&gt;if &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;cmd&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CanExecute&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CommandParameter&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;))        &lt;br /&gt;                {         &lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;cmd&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Execute&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;CommandParameter&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;);        &lt;br /&gt;                }         &lt;br /&gt;            }         &lt;br /&gt;        }         &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion        &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;}        &lt;br /&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Molto semplice, cosa abbiamo scritto :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Dichiariamo 2 DependencyCommand, per poter eseguire il Binding al nostro command (CommandProperty, Esposto solitamente da una ViewModel) e per poter eseguire il Binding di un parametro opzionale da passare al Command (CommandParametryProperty) &lt;/li&gt;    &lt;li&gt;Diachiaramo una property di tipo Key di nome KeyPress, che è la proprietà tramite la quale setteremo il tasto che desideriamo sia premuto per invocare il command &lt;/li&gt;    &lt;li&gt;Eseguiamo l’override del metodo OnAttach, per poter sottoscrivere l’evento KeyDown del controllo che ci interessa tenere sotto controllo &lt;/li&gt;    &lt;li&gt;Eseguiamo l’override del metodo OnDetaching, per eliminazione la sottoscrizione all’evento &lt;/li&gt;    &lt;li&gt;Con il metodo OnKeyDown, invocato a ogni pressione di tasto che avviene quando il nostro controllo ha il focus, verifichiamo che il tasto premuto sia quello desiderato e in caso positivo invochiamo il command desiderato &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Per Utilizzare questo trigger ora ci basta aggiungere i seguenti namespace nello xaml :&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #fba944"&gt;xmlns&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #fba944"&gt;Fm_Silverlight_Controls&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #ddddbe"&gt;"clr-namespace:Fm.Silverlight.Controls;assembly=Fm.Silverlight.Controls"        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #fba944"&gt;xmlns&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #fba944"&gt;i&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #ddddbe"&gt;&lt;font style="background-color: #000000"&gt;"http://schemas.microsoft.com/expression/2010/interactivity"&lt;/font&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Ora Attacchiamo il trigger alla textBox che ci interessa :&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c69090"&gt;TextBox &lt;/span&gt;&lt;span style="color: #fba944"&gt;x&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #fba944"&gt;Name&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;span style="color: #ddddbe"&gt;"TxtSearch" &lt;/span&gt;&lt;span style="color: #fba944"&gt;Style&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;="{&lt;/span&gt;&lt;span style="color: #f2fdb9"&gt;StaticResource &lt;/span&gt;&lt;span style="color: #ffc1c1"&gt;SearchTextBox&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;}&lt;/span&gt;&lt;span style="color: #ddddbe"&gt;"&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;&amp;gt;        &lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color: #c69090"&gt;i&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #c69090"&gt;Interaction.Triggers&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;&amp;gt;        &lt;br /&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: #c69090"&gt;Fm_Silverlight_Controls&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #c69090"&gt;KeyDownCommandAction &lt;/span&gt;&lt;span style="color: #fba944"&gt;Command&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;="{&lt;/span&gt;&lt;span style="color: #f2fdb9"&gt;Binding &lt;/span&gt;&lt;span style="color: #ffc1c1"&gt;Cerca&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;}&lt;/span&gt;&lt;span style="color: #ddddbe"&gt;" &lt;/span&gt;&lt;span style="color: #fba944"&gt;CommandParameter&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;="{&lt;/span&gt;&lt;span style="color: #f2fdb9"&gt;Binding &lt;/span&gt;&lt;span style="color: #ffc1c1"&gt;Text&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #ffc1c1"&gt;ElementName&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;span style="color: #f2fdb9"&gt;TxtSearch&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;}&lt;/span&gt;&lt;span style="color: #ddddbe"&gt;" &lt;/span&gt;&lt;span style="color: #fba944"&gt;KeyPress&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;span style="color: #ddddbe"&gt;"Enter"&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;/&amp;gt;        &lt;br /&gt;            &amp;lt;/&lt;/span&gt;&lt;span style="color: #c69090"&gt;i&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #c69090"&gt;Interaction.Triggers&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;&amp;gt;        &lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c69090"&gt;TextBox&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;&amp;gt;        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;In Questo esempio, assegno il trigger a una textBox specificando che alla pressione del tasto “Enter” deve esser chiamato il comando Cerca passando come parametro il testo contenuto nella textBox TxtSearch.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3203751c-d106-4b02-9f3c-f4c6f1654e0f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WP7" rel="tag"&gt;WP7&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WPF" rel="tag"&gt;WPF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Trigger" rel="tag"&gt;Trigger&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Behavior" rel="tag"&gt;Behavior&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ilbig.net/aggbug/6.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rudes Luca</dc:creator>
            <guid>http://ilbig.net/archive/2010/11/24/ASSOCIARE-LA-PRESSIONE-DI-UN-TASTO-A-UN-COMMAND-BINDING.aspx</guid>
            <pubDate>Wed, 24 Nov 2010 17:27:00 GMT</pubDate>
            <wfw:comment>http://ilbig.net/comments/6.aspx</wfw:comment>
            <comments>http://ilbig.net/archive/2010/11/24/ASSOCIARE-LA-PRESSIONE-DI-UN-TASTO-A-UN-COMMAND-BINDING.aspx#feedback</comments>
            <wfw:commentRss>http://ilbig.net/comments/commentRss/6.aspx</wfw:commentRss>
            <trackback:ping>http://ilbig.net/services/trackbacks/6.aspx</trackback:ping>
        </item>
        <item>
            <title>Selezione Completa della textbox (Select All Text Into TextBox, Trigger&amp;ndash;Behavior)</title>
            <category>WP7</category>
            <category>Silverlight</category>
            <category>WPF</category>
            <category>Trigger - Behavior</category>
            <link>http://ilbig.net/archive/2010/11/23/SELEZIONE-COMPLETA-DELLA-TEXTBOX-SELECT-ALL-TEXT-INTO-TEXTBOX-TRIGGERNDASHBEHAVIOR.aspx</link>
            <description>&lt;p&gt;Spesso è comodo che durante l’immissione di dati quando si mette a focus una textbox venga selezionato tutto il testo completo, ad esempio durante la compilazione di un ordine di magazzino quando si seleziona il numero di pezzi da spedire è comodo sovrascrivere l’intera informazione senza bisogna di selezionare manualmente il testo da modificare.&lt;/p&gt;  &lt;p&gt;Per risolvere questo, ho creato un trigger:&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #fba944"&gt;namespace &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Fm&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Silverlight&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;Controls        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{        &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Windows&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Windows&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Controls&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Windows&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Interactivity&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;;        &lt;br /&gt;        &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt;        &lt;br /&gt;    /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Behavior per la selezione del testo completo        &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;        &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;public class &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;SelectAllCommandAction &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;: &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;TriggerBase&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;TextBox&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #c9c9bb"&gt;&lt;font style="background-color: #000000"&gt;&amp;gt;        &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: cyan"&gt;#region &lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;Methods        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;protected override void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnAttached&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;()        &lt;br /&gt;        {         &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;AssociatedObject&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;GotFocus &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;+= &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;SelectAllText&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;        &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;base&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnAttached&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;();        &lt;br /&gt;        }         &lt;br /&gt;        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;protected override void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnDetaching&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;()        &lt;br /&gt;        {         &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;AssociatedObject&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;GotFocus &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;-= &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;SelectAllText&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;        &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;base&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnDetaching&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;();        &lt;br /&gt;        }         &lt;br /&gt;        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt;        &lt;br /&gt;        /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Seleziona interamente il testo        &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;        &lt;br /&gt;        /// &amp;lt;param name="sender"&amp;gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;TextBox che ha lanciato l'evento&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;        &lt;br /&gt;        /// &amp;lt;param name="e"&amp;gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;Argomenti dell'evento&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;private void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;SelectAllText&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;object &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;sender&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;RoutedEventArgs &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;e&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;)        &lt;br /&gt;        {         &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;AssociatedObject&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;SelectionStart &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: yellow"&gt;0&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;        &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;AssociatedObject&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;SelectionLength &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;AssociatedObject&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Text&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Length&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;;        &lt;br /&gt;        }         &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion        &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;}        &lt;br /&gt;}         &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Questo trigger è di una semplicità disarmante. Non facciamo altro che eseguire l’override dell’evento OnAttached così da sottoscrivere l’evento Focus del controllo textBox a cui è associato il trigger, al generarsi dell’evento impostiamo SelectionLength pari alla lunghezza totale del contenuto della textBox.&lt;/p&gt;  &lt;p&gt;Per Utilizzare questo trigger ora ci basta aggiungere i seguenti namespace nello xaml :&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #fba944"&gt;xmlns&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #fba944"&gt;i&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #ddddbe"&gt;"http://schemas.microsoft.com/expression/2010/interactivity"        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #fba944"&gt;xmlns&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #fba944"&gt;Fm_Silverlight_Controls&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #ddddbe"&gt;&lt;font style="background-color: #000000"&gt;"clr-namespace:Fm.Silverlight.Controls;assembly=Fm.Silverlight.Controls"        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Ora Attacchiamo il trigger alla textBox che ci interessa :&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c69090"&gt;TextBox&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;&amp;gt;        &lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: #c69090"&gt;i&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #c69090"&gt;Interaction.Triggers&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;&amp;gt;        &lt;br /&gt;                    &amp;lt;&lt;/span&gt;&lt;span style="color: #c69090"&gt;Fm_Silverlight_Controls&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #c69090"&gt;SelectAllCommandAction &lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;/&amp;gt;        &lt;br /&gt;          &amp;lt;/&lt;/span&gt;&lt;span style="color: #c69090"&gt;i&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;:&lt;/span&gt;&lt;span style="color: #c69090"&gt;Interaction.Triggers&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;&amp;gt; &lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;     &lt;br /&gt;&lt;span style="color: #d8d8c8"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #c69090"&gt;TextBox&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;&amp;gt;        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a35e24f0-1191-4181-9238-d9f71be72360" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WP7" rel="tag"&gt;WP7&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WPF" rel="tag"&gt;WPF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Trigger" rel="tag"&gt;Trigger&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Behavior" rel="tag"&gt;Behavior&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ilbig.net/aggbug/5.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rudes Luca</dc:creator>
            <guid>http://ilbig.net/archive/2010/11/23/SELEZIONE-COMPLETA-DELLA-TEXTBOX-SELECT-ALL-TEXT-INTO-TEXTBOX-TRIGGERNDASHBEHAVIOR.aspx</guid>
            <pubDate>Tue, 23 Nov 2010 09:25:00 GMT</pubDate>
            <wfw:comment>http://ilbig.net/comments/5.aspx</wfw:comment>
            <comments>http://ilbig.net/archive/2010/11/23/SELEZIONE-COMPLETA-DELLA-TEXTBOX-SELECT-ALL-TEXT-INTO-TEXTBOX-TRIGGERNDASHBEHAVIOR.aspx#feedback</comments>
            <wfw:commentRss>http://ilbig.net/comments/commentRss/5.aspx</wfw:commentRss>
            <trackback:ping>http://ilbig.net/services/trackbacks/5.aspx</trackback:ping>
        </item>
        <item>
            <title>DataAnnotation WP7, Input Validation (Copiando System.ComponentModel.DataAnnotations)</title>
            <category>WP7</category>
            <link>http://ilbig.net/archive/2010/11/18/DATAANNOTATION-WP7-INPUT-VALIDATION-COPIANDO-SYSTEM.COMPONENTMODEL.DATAANNOTATIONS.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.microsoft.com/windowsphone/it-it/default.aspx" target="_blank"&gt;WP7&lt;/a&gt; non può referenziare System.ComponentModel.DataAnnotations, però piacerebbe a tutti quanti noi utilizzare lo stesso sistema di valutazione dell’input che usiamo con il fratellone &lt;a href="http://www.silverlight.net/" target="_blank"&gt;SL4&lt;/a&gt; . &lt;/p&gt;  &lt;p&gt;Come fare ???&lt;/p&gt;  &lt;p&gt;Semplice, andiamo a scopiazzare qualche idea qua e là da System.ComponentModel.DataAnnotations grazie al fidato “Reflector” e creiamoci la personali library per la validazione dei dati. Procederemo nel seguente modo :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Creazione nuova dll per WP7 &lt;/li&gt;    &lt;li&gt;Scrittura di attributi di validazione &lt;/li&gt;    &lt;li&gt;Creazione del sistema di validazione (Il sistema completo anche di Required, StringLength, RegularExpression, Range e CustomValidator sono disponibili nel codice sorgente a fine post) &lt;/li&gt;    &lt;li&gt;Assegnazione dei attributi alle property che “bindiamo” nello xaml &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Come base di partenza usiamo il progetto creato qui : &lt;a href="http://ilbig.net/archive/2010/11/17/INPUT-VALIDATION-WP7.aspx"&gt;Input Validation WP7&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Creazione dll (Nel mio caso utilizzo Fm.Phone, disponibile nel file compresso in fondo al post)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/98d0f128de1b_A155/1_2.gif" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="1" border="0" alt="1" src="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/98d0f128de1b_A155/1_thumb.gif" width="240" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Scrittura attribute di validazione. Io ad esempio adoro utilizzare le interfacce, quindi : dichiaro un’interfaccia con il metodo di validazione (IsValid), creo la classe ValidationAttribute che eredita da &lt;a href="http://msdn.microsoft.com/it-it/library/System.Attribute" target="_blank"&gt;Attribute&lt;/a&gt; e dalla mia interfaccia. ValidationAttribute è la classe base che utilizzerò per creare tutti gli attributi di validazione specifici, questa classe conterà solo il messaggio di errore personalizzato da utilizzare in caso la validazione non vada a buon fine.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="899"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Interfaccia          &lt;br /&gt;          &lt;pre class="code"&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #fba944"&gt;namespace &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Fm&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Phone&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;DataValidation
&lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{
    &lt;/span&gt;&lt;span style="color: #fba944"&gt;public interface &lt;/span&gt;&lt;/font&gt;&lt;span style="color: #96b4b4"&gt;&lt;font style="background-color: #000000"&gt;IValidationAttribute
    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{
        &lt;/span&gt;&lt;span style="color: #fba944"&gt;void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;IsValid&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;object &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;);
    }
}
&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
      &lt;/td&gt;

      &lt;td valign="top" width="697"&gt;Classe Validation Attribute 
        &lt;pre class="code"&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #fba944"&gt;namespace &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Fm&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Phone&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;DataValidation
&lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{
    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;;

    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt;
    /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Attribute per la validazione delle property
    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;
    &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;[&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;AttributeUsage&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;AttributeTargets&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Property&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;)]
    &lt;/span&gt;&lt;span style="color: #fba944"&gt;public class &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;ValidationAttribute &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;: &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;Attribute&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;/font&gt;&lt;span style="color: #96b4b4"&gt;&lt;font style="background-color: #000000"&gt;IValidationAttribute
    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{
        &lt;/span&gt;&lt;span style="color: cyan"&gt;#region &lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;Construct
        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt;
        /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Istanzia un nuovo attribute per la validazione
        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;
        &lt;/span&gt;&lt;span style="color: #fba944"&gt;internal &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;ValidationAttribute&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;()
            : &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;string&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Empty&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;)
        {
        }

        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt;
        /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Istanzia un nuovo attribute con testo errore personalizzato
        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="errore"&amp;gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;Testo da usare in caso di errore&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;
        &lt;/span&gt;&lt;span style="color: #fba944"&gt;internal &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;ValidationAttribute&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;string &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;errore&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;)
        {
            &lt;/span&gt;&lt;span style="color: #fba944"&gt;if &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;!&lt;/span&gt;&lt;span style="color: #fba944"&gt;string&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;IsNullOrEmpty&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;errore&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;))
            {
                &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Errore &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;errore&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;
                &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;UseCustomError &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #fba944"&gt;true&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;;
            }
        }
        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion

        #region &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;Property
        &lt;/span&gt;&lt;span style="color: #fba944"&gt;internal string &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Errore &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;{ &lt;/span&gt;&lt;span style="color: #fba944"&gt;get&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;; &lt;/span&gt;&lt;span style="color: #fba944"&gt;private set&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;; }

        &lt;/span&gt;&lt;span style="color: #fba944"&gt;internal bool &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;UseCustomError &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;{ &lt;/span&gt;&lt;span style="color: #fba944"&gt;get&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;; &lt;/span&gt;&lt;span style="color: #fba944"&gt;private set&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;; }
        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion

        #region &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;Method
        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt;
        /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Inalza l'errore di validazione
        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="errore"&amp;gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;Testo dell'errore&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;
        &lt;/span&gt;&lt;span style="color: #fba944"&gt;internal void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Error&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;string &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;errore&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;)
        {
            &lt;/span&gt;&lt;span style="color: #fba944"&gt;throw new &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;Exception&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;UseCustomError &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;? &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Errore &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;: &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;errore&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;);
        }
        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion

        #region &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;IValidationAttribute Members
        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public virtual void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;IsValid&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;object &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;)
        {
            &lt;/span&gt;&lt;span style="color: #fba944"&gt;throw new &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;NotImplementedException&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;();
        }
        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion
    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;}
}&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;A questo punto abbiamo la nostra classe base, che vediamo accetta nel costruttore il possibile testo di errore personalizzato da utilizzare in caso di mancata validazione. La classe contiene per comodità anche un metodo che accetta un testo di errore, verifica se è stato settato un testo personalizzato e innalza l’eccezione.&lt;/p&gt;

&lt;p&gt;Adesso procediamo alla creazione del primo validator (in questo post illustrerò la creazione di un solo validator, gli altri sono inclusi nel codice sorgente). Partiamo con il più utilizzato “Required”, questo validator verificherà che sono stati inseriti dei dati e non è stata lasciata vuota la property :&lt;/p&gt;

&lt;p&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #fba944"&gt;namespace &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Fm&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Phone&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;DataValidation 
      &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{ 
      &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;; 
      &lt;br /&gt;

      &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt; 
      &lt;br /&gt;    /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Validazione per campo obbligatorio 
      &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt; 
      &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;[&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;AttributeUsage&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;AttributeTargets&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Property&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;AllowMultiple&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;=&lt;/span&gt;&lt;span style="color: #fba944"&gt;false&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;)] 
      &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;public class &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;RequiredAttribute &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;: &lt;/span&gt;&lt;/font&gt;&lt;span style="color: #96b4b4"&gt;&lt;font style="background-color: #000000"&gt;ValidationAttribute 
      &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{ 
      &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: cyan"&gt;#region &lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;Construct 
      &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;RequiredAttribute&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;() 
      &lt;br /&gt;            : &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;string&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Empty&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;) 
      &lt;br /&gt;        { 

      &lt;br /&gt;        } 

      &lt;br /&gt;

      &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;RequiredAttribute&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;string &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;errore&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;) 
      &lt;br /&gt;            : &lt;/span&gt;&lt;span style="color: #fba944"&gt;base&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;errore&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;) 
      &lt;br /&gt;        { 

      &lt;br /&gt;        } 

      &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion 
      &lt;br /&gt;

      &lt;br /&gt;        #region &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;Property 
      &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public bool &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;AllowEmptyStrings &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;{ &lt;/span&gt;&lt;span style="color: #fba944"&gt;get&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;; &lt;/span&gt;&lt;span style="color: #fba944"&gt;private set&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;; } 
      &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion 
      &lt;br /&gt;

      &lt;br /&gt;        #region &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;Methods 
      &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public override void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;IsValid&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;object &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;) 
      &lt;br /&gt;        { 

      &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;bool &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;isNull &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;value &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;== &lt;/span&gt;&lt;span style="color: #fba944"&gt;null&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;; 
      &lt;br /&gt;

      &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;if &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;!&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;isNull&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;) 
      &lt;br /&gt;            { 

      &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #fba944"&gt;string &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;str &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;value &lt;/span&gt;&lt;span style="color: #fba944"&gt;as string&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;; 
      &lt;br /&gt;

      &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #fba944"&gt;if &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;str &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;!= &lt;/span&gt;&lt;span style="color: #fba944"&gt;null &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;&amp;amp;&amp;amp; !&lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;AllowEmptyStrings&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;) { &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;isNull &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;str&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Trim&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;()&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Length &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;== &lt;/span&gt;&lt;span style="color: yellow"&gt;0&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;; 
      &lt;br /&gt;                } 

      &lt;br /&gt;            } 

      &lt;br /&gt;

      &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;if &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;isNull&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;) 
      &lt;br /&gt;            { 

      &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Error&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #ca9292"&gt;"Campo Obbligatorio"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;); 
      &lt;br /&gt;            } 

      &lt;br /&gt;        } 

      &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: cyan"&gt;&lt;font style="background-color: #000000"&gt;#endregion 
      &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;} 
      &lt;br /&gt;} 

      &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Come possiamo vedere, ereditiamo da ValidationAttribute, eseguiamo l’override del Method IsValid, dove eseguiremo la verifica del valore della property per convalidarlo; in caso il valore sia null controlleremo se è una stringa vuota e se tale valore è possibile accettartlo (AllowEmptyString) in caso non sia valorizzata la property innalzeremo l’eccezione.&lt;/p&gt;

&lt;p&gt;Adesso dobbiamo creare un metodo, che ci permetta di validare una property in base ai propri attribute :&lt;/p&gt;

&lt;p&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #fba944"&gt;namespace &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Fm&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Phone&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;DataValidation 
      &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{ 
      &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;; 
      &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Collections&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Generic&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;; 
      &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Linq&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt; 
    &lt;br /&gt;&lt;font style="background-color: #000000"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #fba944"&gt;using &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;System&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Reflection&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;; 
      &lt;br /&gt;

      &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt; 
      &lt;br /&gt;    /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Classe per la gestione della validazione delle property 
      &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt; 
      &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #fba944"&gt;public static class &lt;/span&gt;&lt;/font&gt;&lt;span style="color: #96b4b4"&gt;&lt;font style="background-color: #000000"&gt;Validator 
      &lt;br /&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;{ 
      &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;font style="background-color: #000000"&gt;/// &amp;lt;summary&amp;gt; 
      &lt;br /&gt;        /// &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;&lt;font style="background-color: #000000"&gt;Valida la property 
      &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt; 
      &lt;br /&gt;        /// &amp;lt;param name="context"&amp;gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;Context di validazione&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt; 
      &lt;br /&gt;        /// &amp;lt;param name="nameProperty"&amp;gt;&lt;/span&gt;&lt;span style="color: #7b987b"&gt;Nome della property da convalidare&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt; 
      &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public static void &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;ValidateProperty&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;object &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;context&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #fba944"&gt;string &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;nameProperty&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;) 
      &lt;br /&gt;        { 

      &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;PropertyInfo &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;property &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;context&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;GetType&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;()&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;GetProperty&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;nameProperty&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;); 
      &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;object &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;value &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;property&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;GetValue&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;context&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #fba944"&gt;null&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;); 
      &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;IEnumerable&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;IValidationAttribute&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;&amp;gt; &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;attrs &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;property&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;GetCustomAttributes&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;typeof&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;ValidationAttribute&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;), &lt;/span&gt;&lt;span style="color: #fba944"&gt;true&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;)&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Cast&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;IValidationAttribute&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;(); 
      &lt;br /&gt;

      &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;foreach &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;IValidationAttribute &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;att &lt;/span&gt;&lt;span style="color: #fba944"&gt;in &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;attrs&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;) 
      &lt;br /&gt;            { 

      &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;att&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;IsValid&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;); 
      &lt;br /&gt;            } 

      &lt;br /&gt;        }&lt;/font&gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt; 
    &lt;br /&gt;&lt;font style="background-color: #000000"&gt;    } 
      &lt;br /&gt;} 

      &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;Nel Metodo ValidateProperty della classe statica Validator, non facciamo altro che caricare la property, caricare i relativi ValidatorAttribute e tramite la loro interfaccia richiamare ogni metodo IsValid passando il valore della property. (Per comodità nel codice vedrete che ho fatto overload del method dove al posto di nameProperty passo un’expression così da rendere possibile il refactor del codice senza problemi e per togliermi dalle scatole stringhe di testo)&lt;/p&gt;

&lt;p&gt;Quindi Vediamo come è la tipica property che vogliamo validare a questo punto :&lt;/p&gt;

&lt;p&gt;&lt;font style="background-color: #000000"&gt;        &lt;span style="color: #fba944"&gt;private string &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;_property&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;; 
      &lt;br /&gt;        [&lt;/span&gt;&lt;span style="color: #96b4b4"&gt;Required&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;] 
      &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public string &lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;TextProperty 
      &lt;br /&gt;        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{ 
      &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #fba944"&gt;get &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;{ &lt;/span&gt;&lt;span style="color: #fba944"&gt;return &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;_property&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;; } 
      &lt;br /&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #fba944"&gt;&lt;font style="background-color: #000000"&gt;set 
      &lt;br /&gt;            &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{ 
      &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #fba944"&gt;if &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;_property &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;!= &lt;/span&gt;&lt;span style="color: #fba944"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;) 
      &lt;br /&gt;                { 

      &lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;_property &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #fba944"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;; 
      &lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnPropertyChanged&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #ca9292"&gt;"TextProperty"&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;); 
      &lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;Validator&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;ValidateProperty&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #fba944"&gt;string&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, () &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="color: #fba944"&gt;this&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;TextProperty&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;); 
      &lt;br /&gt;                } 

      &lt;br /&gt;            } 

      &lt;br /&gt;        } 

      &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;Ora andiamo a Bindarla nel codice a una textBox e verifichiamone il funzionamento :&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/98d0f128de1b_A155/2_2.gif" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2" border="0" alt="2" src="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/98d0f128de1b_A155/2_thumb.gif" width="128" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Il codice di esempio contiene anche altri validator : StringLength, RegularExpression, Range, Custom (Esegue la chiamata a un metodo).&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:fa21f9e1-9036-4fd1-9864-553ae8d881b8" class="wlWriterEditableSmartContent"&gt;&lt;p&gt;Codice Sorgente Completo : &lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/98d0f128de1b_A155/ProvaErrorBinding_Validation.rar" target="_blank"&gt;ProvaErrorBinding_Validation.rar&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;
  &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f5a7b9bb-daef-4cd2-8172-52eec439a214" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WP7" rel="tag"&gt;WP7&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ilbig.net/aggbug/4.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rudes Luca</dc:creator>
            <guid>http://ilbig.net/archive/2010/11/18/DATAANNOTATION-WP7-INPUT-VALIDATION-COPIANDO-SYSTEM.COMPONENTMODEL.DATAANNOTATIONS.aspx</guid>
            <pubDate>Thu, 18 Nov 2010 11:06:00 GMT</pubDate>
            <wfw:comment>http://ilbig.net/comments/4.aspx</wfw:comment>
            <comments>http://ilbig.net/archive/2010/11/18/DATAANNOTATION-WP7-INPUT-VALIDATION-COPIANDO-SYSTEM.COMPONENTMODEL.DATAANNOTATIONS.aspx#feedback</comments>
            <wfw:commentRss>http://ilbig.net/comments/commentRss/4.aspx</wfw:commentRss>
            <trackback:ping>http://ilbig.net/services/trackbacks/4.aspx</trackback:ping>
        </item>
        <item>
            <title>Input Validation WP7</title>
            <category>WP7</category>
            <link>http://ilbig.net/archive/2010/11/17/INPUT-VALIDATION-WP7.aspx</link>
            <description>&lt;p&gt;Per la validazione dei dati inseriti dall’utente in &lt;a href="http://www.microsoft.com/windowsphone/it-it/default.aspx" target="_blank"&gt;WP7&lt;/a&gt; (Windows Phone 7), io utilizzo la seguente tecnica :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Creo uno style contenente anche il template per la validazione (in questo caso, ad esempio non faccio altro che ricopiare lo Style di una classica TextBox di &lt;a href="http://www.silverlight.net/" target="_blank"&gt;SL4&lt;/a&gt; (SilverLight 4), con anche il controlTemplate usato nel tooltip e il border per la validazione). &lt;/li&gt;    &lt;li&gt;Nella Property quando viene modificato il valore, verifico che siano stati rispettati i criteri richiesti … in caso non siano stati rispettati, innalzo un’eccezione. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Vediamo in pratica di cosa sto parlando :&lt;/p&gt;  &lt;p&gt;Apriamo Blend e inseriamo una textBox –&amp;gt; Dopo di che editiamone lo style&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/1_2.gif" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="1" border="0" alt="1" src="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/1_thumb.gif" width="240" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Modifichiamo lo Style, inserendo con attenzione il border per la segnalazione dell’errore, il tooltip che segnalerà che errore si è verificato e modifichiamo “InvalidUnfocused” “Invalidfocused” che rispettivamente gli stati che assume il nostro controllo in caso di “Errore controllo senza focus” “Errore controllo con focus”.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Border&lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/2_2.gif" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2" border="0" alt="2" src="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/2_thumb.gif" width="240" height="199" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;TooTip&lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/3_2.gif" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="3" border="0" alt="3" src="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/3_thumb.gif" width="240" height="204" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;VisualState&lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/4_2.gif" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="4" border="0" alt="4" src="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/4_thumb.gif" width="240" height="142" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;A questo punto scriviamo la property a cui vogliamo legare la nostra textBox :&lt;/p&gt;  &lt;pre class="code"&gt; &lt;font style="background-color: #000000"&gt;       &lt;span style="color: #fba944"&gt;private string &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;_property&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;
        &lt;/span&gt;&lt;span style="color: #fba944"&gt;public string &lt;/span&gt;&lt;/font&gt;&lt;span style="color: #dfdfbf"&gt;&lt;font style="background-color: #000000"&gt;TextProperty
        &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{
            &lt;/span&gt;&lt;span style="color: #fba944"&gt;get &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;{ &lt;/span&gt;&lt;span style="color: #fba944"&gt;return &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;_property&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;; }
            &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #fba944"&gt;&lt;font style="background-color: #000000"&gt;set
            &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{
                &lt;/span&gt;&lt;span style="color: #fba944"&gt;if &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;_property &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;!= &lt;/span&gt;&lt;span style="color: #fba944"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;)
                {
                    &lt;/span&gt;&lt;span style="color: #fba944"&gt;if &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;!&lt;/span&gt;&lt;span style="color: #fba944"&gt;string&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;IsNullOrEmpty&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;))
                    {
                        &lt;/span&gt;&lt;span style="color: #fba944"&gt;if &lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #fba944"&gt;value&lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;.&lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;Length &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;&amp;lt; &lt;/span&gt;&lt;span style="color: yellow"&gt;5&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;)
                        {
                            &lt;/span&gt;&lt;span style="color: #fba944"&gt;throw new &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;Exception&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #ca9292"&gt;"Lunghezza minima 5 caratteri"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;);
                        }
                    }
                    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: #fba944"&gt;&lt;font style="background-color: #000000"&gt;else
                    &lt;/font&gt;&lt;/span&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;{
                        &lt;/span&gt;&lt;span style="color: #fba944"&gt;throw new &lt;/span&gt;&lt;span style="color: #96b4b4"&gt;Exception&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #ca9292"&gt;"Campo Obbligatorio"&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;);
                    }

                    &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;_property &lt;/span&gt;&lt;span style="color: #c9c9bb"&gt;= &lt;/span&gt;&lt;span style="color: #fba944"&gt;value&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;;
                    &lt;/span&gt;&lt;span style="color: #dfdfbf"&gt;OnPropertyChanged&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;(&lt;/span&gt;&lt;span style="color: #ca9292"&gt;"TextProperty"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;);
                }
            }
        }
&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Modifichiamo lo xaml per il binding della textBox : &lt;/p&gt;

&lt;pre class="code"&gt;&lt;font style="background-color: #000000"&gt;&lt;span style="color: #d8d8c8"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #c69090"&gt;TextBox &lt;/span&gt;&lt;span style="color: #fba944"&gt;Margin&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;span style="color: #ddddbe"&gt;"8" &lt;/span&gt;&lt;span style="color: #fba944"&gt;Text&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;="{&lt;/span&gt;&lt;span style="color: #f2fdb9"&gt;Binding &lt;/span&gt;&lt;span style="color: #ffc1c1"&gt;TextProperty&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #ffc1c1"&gt;Mode&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;span style="color: #f2fdb9"&gt;TwoWay&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #ffc1c1"&gt;NotifyOnValidationError&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;span style="color: #f2fdb9"&gt;True&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;, &lt;/span&gt;&lt;span style="color: #ffc1c1"&gt;ValidatesOnExceptions&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;=&lt;/span&gt;&lt;span style="color: #f2fdb9"&gt;True&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;}&lt;/span&gt;&lt;span style="color: #ddddbe"&gt;" &lt;/span&gt;&lt;span style="color: #fba944"&gt;Style&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;="{&lt;/span&gt;&lt;span style="color: #f2fdb9"&gt;StaticResource &lt;/span&gt;&lt;span style="color: #ffc1c1"&gt;TextBoxStyle1&lt;/span&gt;&lt;span style="color: #d8d8c8"&gt;}&lt;/span&gt;&lt;span style="color: #ddddbe"&gt;"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #d8d8c8"&gt;&lt;font style="background-color: #000000"&gt;/&amp;gt;
&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Avviamo il debug dell’app e vediamo il risultato :&lt;/p&gt;

&lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="133"&gt;&lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/5_2.gif" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="5" border="0" alt="5" src="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/5_thumb.gif" width="127" height="240" /&gt;&lt;/a&gt;&lt;/td&gt;

      &lt;td valign="top" width="133"&gt;&lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/6_2.gif" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="6" border="0" alt="6" src="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/6_thumb.gif" width="128" height="240" /&gt;&lt;/a&gt;&lt;/td&gt;

      &lt;td valign="top" width="133"&gt;&lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/7_2.gif" rel="lightbox"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="7" border="0" alt="7" src="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/7_thumb.gif" width="128" height="240" /&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Ecco fatto la nostra validazione in salsa WP7 uguale a quella del fratellone SL4&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:dd928fde-62d3-4922-a7d5-20742f49e140" class="wlWriterEditableSmartContent"&gt;&lt;p&gt;Download : &lt;a href="http://ilbig.net/images/ilbig_net/Windows-Live-Writer/Input-Validation-WP7_D58F/ProvaErrorBinding.rar" target="_blank"&gt;ProvaErrorBinding.rar&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;







&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0e5618dd-42c0-46c1-9021-aa5d0317f947" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WP7" rel="tag"&gt;WP7&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ilbig.net/aggbug/3.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Rudes Luca</dc:creator>
            <guid>http://ilbig.net/archive/2010/11/17/INPUT-VALIDATION-WP7.aspx</guid>
            <pubDate>Wed, 17 Nov 2010 14:10:00 GMT</pubDate>
            <wfw:comment>http://ilbig.net/comments/3.aspx</wfw:comment>
            <comments>http://ilbig.net/archive/2010/11/17/INPUT-VALIDATION-WP7.aspx#feedback</comments>
            <wfw:commentRss>http://ilbig.net/comments/commentRss/3.aspx</wfw:commentRss>
            <trackback:ping>http://ilbig.net/services/trackbacks/3.aspx</trackback:ping>
        </item>
    </channel>
</rss>