<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Luigi Melisi &#187; visuale</title>
	<atom:link href="http://www.luigimelisi.com/tag/visuale/feed" rel="self" type="application/rss+xml" />
	<link>http://www.luigimelisi.com</link>
	<description>Development Blog : C# Code Samples,.NET Tips and Tricks</description>
	<lastBuildDate>Thu, 03 Mar 2011 09:01:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>WPF ed ereditarietà visuale</title>
		<link>http://www.luigimelisi.com/programmazione/net_framework/wpf-ed-ereditarieta-visuale.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wpf-ed-ereditarieta-visuale</link>
		<comments>http://www.luigimelisi.com/programmazione/net_framework/wpf-ed-ereditarieta-visuale.html#comments</comments>
		<pubDate>Fri, 15 Jan 2010 16:53:50 +0000</pubDate>
		<dc:creator>Luigi Melisi</dc:creator>
				<category><![CDATA[.Net Framework]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[BaseView]]></category>
		<category><![CDATA[controlli]]></category>
		<category><![CDATA[ControlTemplate]]></category>
		<category><![CDATA[Ereditarietà]]></category>
		<category><![CDATA[Expression]]></category>
		<category><![CDATA[Expression Blend]]></category>
		<category><![CDATA[finestre]]></category>
		<category><![CDATA[footer]]></category>
		<category><![CDATA[myapplication]]></category>
		<category><![CDATA[Setter]]></category>
		<category><![CDATA[visuale]]></category>
		<category><![CDATA[Window]]></category>
		<category><![CDATA[x type]]></category>

		<guid isPermaLink="false">http://www.luigimelisi.com/?p=601</guid>
		<description><![CDATA[Una delle “mancanze” che alcuni lamentano in WPF è l’assenza dell’ereditarietà visuale delle Window e dei UserControl.
In realtà esistono semplici meccanismi che permettono di ottenere lo stesso risultato.
Una delle tecniche è quella di utilizzare un template per stilare una BaseWindow o un  [...]]]></description>
			<content:encoded><![CDATA[<p><strong></strong>Una delle “mancanze” che alcuni lamentano in <strong>WPF è l’assenza dell’ereditarietà visuale delle Window e dei UserControl.</strong></p>
<p>In realtà esistono semplici meccanismi che permettono di ottenere lo stesso risultato.<span id="more-601"></span></p>
<p>Una delle tecniche è quella di utilizzare un template per stilare una BaseWindow o un BaseControl:</p>
<p>Supponiamo di avere una BaseView (Window) base dalla quale facciamo derivare tutte le finestre della nostra applicazione:</p>
<p>Definiremo una classe BaseView che eredita da Window e avrà tutti i metodi/propriertà necessarie:</p>
<blockquote><p><strong>public class BaseView : Window</strong></p>
<p><strong>{</strong></p>
<p><strong>// &#8230;</strong></p>
<p><strong>}</strong></p></blockquote>
<p>Questa è solo una classe e non ha parte visuale.</p>
<p>La parte “visuale” la disegno con Expression Blend come stile della BaseView e vado a ridefinire il ControlTemplate mettendo al suo interno tutti i controlli che voglio vedere in tutte le finestre che ereditano:</p>
<blockquote><p><strong>&lt;Style TargetType=&#8221;{x:Type Common:BaseView}&#8221;&gt;</strong></p>
<p><strong>&lt;Setter Property=&#8221;Template&#8221;&gt;</strong></p>
<p><strong>&lt;Setter.Value&gt;</strong></p>
<p><strong>&lt;ControlTemplate TargetType=&#8221;{x:Type Common:BaseView}&#8221;&gt;</strong></p>
<p><strong>&lt;StacckPanel&gt;</strong></p>
<p><strong>&lt;!&#8211; Altri controlli: toolbar? &#8211;&gt;</strong></p>
<p><strong>&lt;ContentPresenter/&gt;</strong></p>
<p><strong>&lt;!&#8211; Altri controlli: footer? &#8211;&gt;</strong></p>
<p><strong>&lt;/StackPanel&gt;</strong></p>
<p><strong>&lt;/ControlTemplate&gt;</strong></p>
<p><strong>&lt;/Setter.Value&gt;</strong></p>
<p><strong>&lt;/Setter&gt;</strong></p>
<p><strong>&lt;/Style&gt;</strong></p></blockquote>
<p>Questo stile viene poi applicato a tutte i controlli di tipo BaseView che avranno quindi tutti un aspetto comune.</p>
<p>Quindi per sfruttare il template è sufficiente che le finestre dell&#8217;applicazione ereditino da BaseView:</p>
<blockquote><p><strong>&lt;MyApplication:BaseView&gt;</strong></p>
<p><strong>&#8230;.</strong></p>
<p><strong>&lt;/MyApplication:BaseView&gt;</strong></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.luigimelisi.com/programmazione/net_framework/wpf-ed-ereditarieta-visuale.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Riordinare gli elementi di una lista tramite Drag and Drop con jQuery</title>
		<link>http://www.luigimelisi.com/programmazione/net_framework/riordinare-gli-elementi-di-una-lista-tramite-drag-and-drop-con-jquery.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=riordinare-gli-elementi-di-una-lista-tramite-drag-and-drop-con-jquery</link>
		<comments>http://www.luigimelisi.com/programmazione/net_framework/riordinare-gli-elementi-di-una-lista-tramite-drag-and-drop-con-jquery.html#comments</comments>
		<pubDate>Mon, 11 Jan 2010 13:22:41 +0000</pubDate>
		<dc:creator>Luigi Melisi</dc:creator>
				<category><![CDATA[.Net Framework]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[getOrder]]></category>
		<category><![CDATA[sortable]]></category>
		<category><![CDATA[visuale]]></category>

		<guid isPermaLink="false">http://www.luigimelisi.com/?p=575</guid>
		<description><![CDATA[Attraverso jQuery.UI è possibile sfruttare un comodo sistema, chiamato sortable, che consente di applicare facilmente il drag &#38; drog a liste.
Una volta scaricato jQuery.UI, l&#8217;aggiunta del supporto per il drag &#38; drop ad una serie di elmenti è semplice.
Per prima cosa è necessario comporre un markup  [...]]]></description>
			<content:encoded><![CDATA[<p>Attraverso<strong> jQuery.UI</strong> è possibile sfruttare un comodo sistema, chiamato sortable, che consente di applicare facilmente il drag &amp; drog a liste.<br />
Una volta scaricato<strong> jQuery.UI</strong>, l&#8217;aggiunta del supporto per il drag &amp; drop ad una serie di elmenti è semplice.<br />
Per prima cosa è necessario comporre un markup che consenta facilmente di gestire dal punto di vista visuale questo comportamento, quindi è opportuno lavorare con uno stile che indichi chiaramente che l&#8217;elemento può essere trascinati. A questo scopo si presta bene un elenco puntato:</p>
<blockquote>
<pre><strong>&lt;ul id="tutorials"&gt; </strong></pre>
<pre><strong>&lt;li id="1"&gt;ASP.NET&lt;/li&gt; </strong></pre>
<pre><strong>&lt;li id="3"&gt;ASP.NET 3.5&lt;/li&gt; </strong></pre>
<pre><strong>&lt;li id="4"&gt;ASP.NET 4.0&lt;/li&gt; </strong></pre>
<pre><strong>&lt;li id="99"&gt;Silverlight&lt;/li&gt; </strong></pre>
<pre><strong>&lt;li id="15"&gt;Entity Framework&lt;/li&gt; </strong></pre>
<pre><strong>&lt;/ul&gt;</strong></pre>
</blockquote>
<p><span id="more-575"></span><br />
Probabilmente l&#8217;ordinamento scelto dall&#8217;utente dovrà poi essere gestito lato server dalla nostra applicazione. Purtroppo, però, l&#8217;elenco puntato non viene inviato in post dal browser e pertanto diventa necessario prevedere un campo hidden in cui salvare questa informazione (nell&#8217;esempio allegato è un campo di tipo text affinché sia possibile vedere come varia al variare dell&#8217;ordinamento).<br />
L&#8217;ID associato agli elementi è in questo caso l&#8217;ID dell&#8217;elemento all&#8217;interno del database, ma è possibile adottare tecniche alternative, l&#8217;importante è poi avere una strategia unica per salvare la posizione corrispondente nel database.</p>
<p>A questo punto è sufficiente scrivere un piccolo pezzo di codice che attivi l&#8217;ordinamento:</p>
<blockquote>
<pre><strong>&lt;scriptcolor: darkred;" lang="EN-GB"&gt;text/javascript"&gt;&lt;!-- </strong></pre>
<pre><strong>var setSelector = "#tutorials"; </strong></pre>
<pre><strong>$(function() { </strong></pre>
<pre><strong>  $(setSelector).sortable({ </strong></pre>
<pre><strong>    axis: "y", </strong></pre>
<pre><strong>    cursor: "move", </strong></pre>
<pre><strong>    update: function() { getOrder(); } </strong></pre>
<pre><strong>  }); </strong></pre>
<pre><strong>   </strong></pre>
<pre><strong>  getOrder(); </strong></pre>
<pre><strong>}); </strong></pre>
</blockquote>
<pre>function getOrder() {</pre>
<pre>  $('#order').val($(setSelector).sortable("toArray"));</pre>
<pre>}</pre>
<pre>//--&gt;&lt;/script&gt;</pre>
<p>La funzione getOrder si occupa di salvare l&#8217;ordine corrente all&#8217;interno di un campo nascosto: a questo punto per inviare il valore direttamente al server è sufficiente inserire un pulsante di submit della form.<br />
Questa tecnica è facilmente implementabile con ASP.NET grazie all&#8217;uso del controllo Repeater, che consente di produrre un markup con dati prelavati da database, sostituendo solo l&#8217;ID dove serve:</p>
<pre>&lt;asp:Repeater id="TutorialList" runat="server"&gt;</pre>
<pre>  &lt;HeaderTemplate&gt;</pre>
<pre>    &lt;ul id="tutorials"&gt;</pre>
<pre>  &lt;/HeaderTemplate&gt;</pre>
<pre>  &lt;ItemTemplate&gt;</pre>
<pre>     &lt;li id="&lt;%#Eval("ID")%&gt;"&gt;&lt;%#Eval("TutorialName")&lt;/li&gt;</pre>
<pre>   &lt;/ItemTemplate&gt;</pre>
<pre>  &lt;FooterTemplate&gt;</pre>
<pre>    &lt;ul id="tutorials"&gt;</pre>
<pre>  &lt;/FooterTemplate&gt;</pre>
<pre>&lt;/asp:Repeater&gt;</pre>
<p><a href="http://www.youbuy.it/lastminute.aspx" rel="nofollow" target="_blank"><img class="aligncenter" title="YouBuy.it - Last Minute - Offerte Sottocosto" src="http://images.youbuy.it/adv/last.jpg" alt="last Riordinare gli elementi di una lista tramite Drag and Drop con jQuery" width="450" height="600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.luigimelisi.com/programmazione/net_framework/riordinare-gli-elementi-di-una-lista-tramite-drag-and-drop-con-jquery.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

