<?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>UNi ... De PHP à .NET &#187; WPF</title>
	<atom:link href="https://blog.developpez.com/uni-fr/pcategory/net-3-x-net-4-x/wpf/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/uni-fr</link>
	<description></description>
	<lastBuildDate>Wed, 07 May 2014 13:59:08 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>WPF &amp; MVVM &#8211; Astuce n°1 &#8211; TreeView et SelectedItem</title>
		<link>https://blog.developpez.com/uni-fr/p10698/net-3-x-net-4-x/wpf_aamp_mvvm_astuce_nd1_treeview_et_sel</link>
		<comments>https://blog.developpez.com/uni-fr/p10698/net-3-x-net-4-x/wpf_aamp_mvvm_astuce_nd1_treeview_et_sel#comments</comments>
		<pubDate>Mon, 06 Feb 2012 09:54:10 +0000</pubDate>
		<dc:creator><![CDATA[UNi[FR]]]></dc:creator>
				<category><![CDATA[.NET 3.x & .NET 4.x]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Après un moment sans développer en .NET, je viens de découvrir le pattern MVVM (Model &#8211; View &#8211; ViewModel) qui est vraiment bien pour décomposer son code. Je ne rentrerai pas dans le détail de ce pattern, pour ça je vous renvoie vers l&#8217;excellent livre de Thomas Lebrun et Jonathan Antoine : &#171;&#160;MVVM, un pattern pour les gouverner tous&#160;&#187; http://www.digitbooks.fr/catalogue/mvvm-antoine-lebrun.html Qui dis nouvelle méthodologie, dis nouvelle problématiques. La première que j&#8217;ai rencontré est avec le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Après un moment sans développer en .NET, je viens de découvrir le pattern MVVM (Model &#8211; View &#8211; ViewModel) qui est vraiment bien pour décomposer son code. Je ne rentrerai pas dans le détail de ce pattern, pour ça je vous renvoie vers l&rsquo;excellent livre de Thomas Lebrun et Jonathan Antoine : &laquo;&nbsp;MVVM, un pattern pour les gouverner tous&nbsp;&raquo; <a href="http://www.digitbooks.fr/catalogue/mvvm-antoine-lebrun.html">http://www.digitbooks.fr/catalogue/mvvm-antoine-lebrun.html</a></p>
<p>Qui dis nouvelle méthodologie, dis nouvelle problématiques. La première que j&rsquo;ai rencontré est avec le composant Treeview et l&rsquo;impossibilité de binder le SelectedItem.<br />
Concernant l&rsquo;implémentation du Treeview en mode MVVM, l&rsquo;article de Josh Smith est particuliérement intéressant : <a href="http://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode">http://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode</a></p>
<p>Le code suivant ne compile donc pas :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;TreeView Grid.Column=&quot;0&quot; ItemsSource=&quot;{Binding CategoryFirstLevel}&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SelectedItem=&quot;{Binding SelectedCategory, Mode=TwoWay}&quot; /&gt;</div></div>
<p>Parmi les solutions existantes pour résoudre ce problème, la plus rapide de mon point de vue et de créer un nouveau composant &laquo;&nbsp;ExtendedTreeView&nbsp;&raquo; qui hérite du composant Treeview dans lequel on définit une nouvelle propriété SelectedItem_.</p>
<p>Ce qui nous donne :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; public class ExtendedTreeView : TreeView <br />
&nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; public ExtendedTreeView() <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : base() <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.SelectedItemChanged += new RoutedPropertyChangedEventHandler&lt;object&gt;(___ICH); <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; void ___ICH(object sender, RoutedPropertyChangedEventArgs&lt;object&gt; e) <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (SelectedItem != null) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetValue(SelectedItem_Property, SelectedItem); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; public object SelectedItem_ <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (object)GetValue(SelectedItem_Property); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetValue(SelectedItem_Property, value); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; public static readonly DependencyProperty SelectedItem_Property = DependencyProperty.Register(&quot;SelectedItem_&quot;, typeof(object), typeof(ExtendedTreeView), new UIPropertyMetadata(null)); <br />
&nbsp; &nbsp; }</div></div>
<p>Il suffit ensuite dans votre code XAML de faire appel à ce nouveau composant :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;ctrl:ExtendedTreeView Grid.Column=&quot;0&quot; ItemsSource=&quot;{Binding CategoryFirstLevel}&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SelectedItem_=&quot;{Binding SelectedCategory, Mode=TwoWay}&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt;</div></div>
<p><strong>ctrl:</strong> correspondant à l&rsquo;espace de nom dans lequel mon composant est déclarer.</p>
<p>Vous voilà donc avec un Treeview pour lequel i lest très facile de récupérer le SelectedItem.</p>
<p>A bientôt pour d&rsquo;autres astuces !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# 3.x &#8211; Sélectionner un élémént dans une TreeView</title>
		<link>https://blog.developpez.com/uni-fr/p5119/net-3-x-net-4-x/c_3_x_selectionner_un_element_dans_une_t</link>
		<comments>https://blog.developpez.com/uni-fr/p5119/net-3-x-net-4-x/c_3_x_selectionner_un_element_dans_une_t#comments</comments>
		<pubDate>Mon, 18 Feb 2008 10:03:06 +0000</pubDate>
		<dc:creator><![CDATA[UNi[FR]]]></dc:creator>
				<category><![CDATA[.NET 3.x & .NET 4.x]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voilà une petite fonction qui va permettre de sélectionner un élément dans une TreeView selon le contenu de sa propriété Tag &#160; &#160; &#160; &#160; // On explore le TreeView pour voir si on &#160; &#160; &#160; &#160; &#160; sélectionne un élément &#160; &#160; &#160; &#160; public bool readTreeViewItem(TreeView inTV, object inObj) &#160; &#160; &#160; &#160; { &#160; &#160; &#160; &#160; &#160; &#160; &#160; TreeViewItem inTVI; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; for [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voilà une petite fonction qui va permettre de sélectionner un élément dans une TreeView selon le contenu de sa propriété Tag</p>
<pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; // On explore le TreeView pour voir si on &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; sélectionne un élément <br />
&nbsp; &nbsp; &nbsp; &nbsp; public bool readTreeViewItem(TreeView inTV, object inObj) <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TreeViewItem inTVI; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i &lt; inTV.Items.Count; i++) &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var _r = readTreeViewItem(inTV.Items[i] as TreeViewItem, inObj); &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (_r) return _r; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return false; <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; } &nbsp;<br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; // On explore le TreeViewItem pour voir si on &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; sélectionne un élément (fonction récursive) <br />
&nbsp; &nbsp; &nbsp; &nbsp; private bool readTreeViewItem(TreeViewItem inTVI, object inId) <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (inTVI.Tag.ToString() == inId.ToString()) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inTVI.IsSelected = true; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (inTVI.Items.Count &gt; 0) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i &lt; inTVI.Items.Count; i++) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bool _b = readTreeViewItem((inTVI.Items[i] as TreeViewItem), &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inId); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (_b) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return false; <br />
&nbsp; &nbsp; &nbsp; &nbsp; }</div></div>

</pre>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPF &#8211; Astuce n°3 &#8211; Scroll + Drag&amp;Drop avec une listbox</title>
		<link>https://blog.developpez.com/uni-fr/p5037/net-3-x-net-4-x/wpf_scroll_dragaamp_drop_avec_une_listbo</link>
		<comments>https://blog.developpez.com/uni-fr/p5037/net-3-x-net-4-x/wpf_scroll_dragaamp_drop_avec_une_listbo#comments</comments>
		<pubDate>Tue, 05 Feb 2008 10:38:01 +0000</pubDate>
		<dc:creator><![CDATA[UNi[FR]]]></dc:creator>
				<category><![CDATA[.NET 3.x & .NET 4.x]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voici une petite astuce pour pouvoir dans une meme listbox utiliser la barre de scroll avec la souris et utilser le drag&#38;drop (je vous renvoi à l&#8217;excellent article de Thomas Lebrun pour la mise en place du drag&#38;drop http://blogs.developpeur.org/tom/archive/2006/06/08/21434.aspx) Le principe est simple J&#8217;ai ma listebox dans laquelle j&#8217;ai implémenté le drag&#38;drop &#160; &#160; &#160; &#160;&#60;ListBox MouseMove=&#34;MouseMoveMethode&#34; AllowDrop=&#34;True&#34; &#160; &#160; &#160; &#160; &#160;SelectionMode=&#34;Extended&#34; Width=&#34;440&#34; Height=&#34;250&#34; &#160; &#160; &#160; &#160; &#160;x:Name=&#34;LBIVueFile&#34; ItemsSource=&#34;{Binding}&#34; &#160; &#160; &#160; &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voici une petite astuce pour pouvoir dans une meme listbox utiliser la barre de scroll avec la souris et utilser le drag&amp;drop (je vous renvoi à l&rsquo;excellent article de Thomas Lebrun pour la mise en place du drag&amp;drop <a href="http://blogs.developpeur.org/tom/archive/2006/06/08/21434.aspx">http://blogs.developpeur.org/tom/archive/2006/06/08/21434.aspx</a>)</p>
<p>Le principe est simple</p>
<p>J&rsquo;ai ma listebox dans laquelle j&rsquo;ai implémenté le drag&amp;drop</p>
<pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp;&lt;ListBox MouseMove=&quot;MouseMoveMethode&quot; AllowDrop=&quot;True&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;SelectionMode=&quot;Extended&quot; Width=&quot;440&quot; Height=&quot;250&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;x:Name=&quot;LBIVueFile&quot; ItemsSource=&quot;{Binding}&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;Background=&quot;#FFA9C8FF&quot; /&gt;</div></div>

</pre>
<p>Si je souhaite utiliser la barre de scroll avec la souris il va croire que je suis en train d&rsquo;effectuer un drag&#038;drop ce qui n&rsquo;est pas du tout le cas. Pour éviter d&rsquo;avoir ce probléme il suffit d&rsquo;entourer la listbox avec un scrollviewer, ce qui nous donne ceci :</p>
<pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp;&lt;ScrollViewer CanContentScroll=&quot;True&quot; Width=&quot;440&quot; Height=&quot;230&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;VerticalScrollBarVisibility=&quot;Auto&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;ListBox MouseMove=&quot;MouseMoveMethode&quot; AllowDrop=&quot;False&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SelectionMode=&quot;Extended&quot; Width=&quot;440&quot; x:Name=&quot;LBIVueFile&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ItemsSource=&quot;{Binding}&quot; Background=&quot;#FFA9C8FF&quot; /&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/ScrollViewer&gt;</div></div>

</pre>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPF &#8211; Astuce n°2 &#8211; Déclarer et utiliser un delegate C#</title>
		<link>https://blog.developpez.com/uni-fr/p4827/net-3-x-net-4-x/wpf_astuce_nd2_declarer_et_utiliser_un_d</link>
		<comments>https://blog.developpez.com/uni-fr/p4827/net-3-x-net-4-x/wpf_astuce_nd2_declarer_et_utiliser_un_d#comments</comments>
		<pubDate>Mon, 21 Jan 2008 09:05:05 +0000</pubDate>
		<dc:creator><![CDATA[UNi[FR]]]></dc:creator>
				<category><![CDATA[.NET 3.x & .NET 4.x]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voici un petit exemple de déclaration et utilisation d&#8217;un delegate en WPF (.NET 3.x) &#160; &#160; &#160; &#160; // Ici on déclare le delegate &#160; &#160; &#160; &#160; public delegate void mondelegate(); &#160; &#160; &#160; &#160; &#160; // Ici on cré la fonction qui sera associé à mon delegate &#160; &#160; &#160; &#160; public void fonction_associe_au_delegate() &#160; &#160; &#160; &#160; { &#160; &#160; &#160; &#160; &#160; &#160; &#160;// ... je place ici mon code qui [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voici un petit exemple de déclaration et utilisation d&rsquo;un delegate en WPF (.NET 3.x)</p>
<pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; // Ici on déclare le delegate <br />
&nbsp; &nbsp; &nbsp; &nbsp; public delegate void mondelegate(); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Ici on cré la fonction qui sera associé à mon delegate <br />
&nbsp; &nbsp; &nbsp; &nbsp; public void fonction_associe_au_delegate() <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// ... je place ici mon code qui accéde au composants ... <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; // La fonction qui va lancer le delegate <br />
&nbsp; &nbsp; &nbsp; &nbsp; public void mafonction() <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.Dispatcher.Invoke( <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.Windows.Threading.DispatcherPriority.Normal, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new mondelegate(fonction_associe_au_delegate) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;); <br />
&nbsp; &nbsp; &nbsp; &nbsp; }</div></div>

</pre>
<p>Le bouton étant d&rsquo;appeller mafonction() dans un thread <img src="https://blog.developpez.com/uni-fr/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[C#] Déplier complétement (expand all) un TreeView en .Net 3.x</title>
		<link>https://blog.developpez.com/uni-fr/p4564/net-3-x-net-4-x/c_deplier_completement_expand_all_un_tre</link>
		<comments>https://blog.developpez.com/uni-fr/p4564/net-3-x-net-4-x/c_deplier_completement_expand_all_un_tre#comments</comments>
		<pubDate>Thu, 22 Nov 2007 13:24:20 +0000</pubDate>
		<dc:creator><![CDATA[UNi[FR]]]></dc:creator>
				<category><![CDATA[.NET 3.x & .NET 4.x]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Voilà une petite fonction bien pratique qui permet de déplier tout les noeuds d&#8217;un TreeView &#160; &#160; &#160; &#160; public void expandAll(TreeView inTV) &#160; &#160; &#160; &#160; { &#160; &#160; &#160; &#160; &#160; &#160; &#160; TreeViewItem inTVI; &#160; &#160; &#160; &#160; &#160; &#160; &#160; for (int i = 0; i &#60; inTV.Items.Count; i++) &#160; &#160; &#160; &#160; &#160; &#160; &#160; { &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;nTVI = TreeViewItem inTVI = [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voilà une petite fonction bien pratique qui permet de déplier tout les noeuds d&rsquo;un TreeView</p>
<pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; public void expandAll(TreeView inTV) <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TreeViewItem inTVI; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i &lt; inTV.Items.Count; i++) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nTVI = TreeViewItem inTVI = inTV.Items[i] as TreeViewItem; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;expandTreeViewItem((inTVI.Items[i] as TreeViewItem)); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; private void expandTreeViewItem(TreeViewItem inTVI) <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inTVI.IsExpand = true; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (inTVI.Items.Count &gt; 0) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i &lt; inTVI.Items.Count; i++) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; expandTreeViewItem((inTVI.Items[i] as TreeViewItem)); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; }</div></div>

</pre>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WPF &#8211; Astuce n°1 &#8211; Localiser un composant en C#</title>
		<link>https://blog.developpez.com/uni-fr/p4258/net-3-x-net-4-x/wpf_astuce_localiser_composant</link>
		<comments>https://blog.developpez.com/uni-fr/p4258/net-3-x-net-4-x/wpf_astuce_localiser_composant#comments</comments>
		<pubDate>Thu, 20 Sep 2007 08:33:18 +0000</pubDate>
		<dc:creator><![CDATA[UNi[FR]]]></dc:creator>
				<category><![CDATA[.NET 3.x & .NET 4.x]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[C’est parti, je me suis mis à .NET 3.0 avec WPF et XAML&#8230;Ca fait maintenant 2 semaines que j’en bave mais j’ai reussi à faire quelques composants plutôt sympa. Je vais essayer de vous donner quelques astuces pour vous aider dans les méandres de WPF et XAML &#8230;. Comment localiser un élément sur le formulaire via le code C# imanginons la fenêtre XAML suivante : &#60;Window x:Class=&#34;Exemple1&#34; xmlns=&#34;http://schemas.microsoft.com/winfx/2006/xaml/presentation&#34; xmlns:x=&#34;http://schemas.microsoft.com/winfx/2006/xaml&#34; xmlns:local=&#34;clr-namespace:Exemple1&#34; Title=&#34;Exemple1&#34; Height=&#34;Auto&#34; Width=&#34;Auto&#34; &#62; &#60;StackPanel&#62; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>C’est parti, je me suis mis à .NET 3.0 avec WPF et XAML&#8230;Ca fait maintenant 2 semaines que j’en bave mais j’ai reussi à faire quelques composants plutôt sympa.</p>
<p>Je vais essayer de vous donner quelques astuces pour vous aider dans les méandres de WPF et XAML &#8230;.</p>
<p>Comment localiser un élément sur le formulaire via le code C#<br />
imanginons la fenêtre XAML suivante :</p>
<pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;Window <br />
x:Class=&quot;Exemple1&quot; <br />
xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot; <br />
xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot; <br />
xmlns:local=&quot;clr-namespace:Exemple1&quot; <br />
Title=&quot;Exemple1&quot; Height=&quot;Auto&quot; Width=&quot;Auto&quot; <br />
&gt; <br />
&lt;StackPanel&gt; <br />
&lt;ListView x:Name=&quot;Liste&quot;&gt; <br />
&lt;ListViewItem Content=&quot;Test 01&quot; /&gt; <br />
&lt;ListViewItem Content=&quot;Test 02&quot; /&gt; <br />
&lt;ListViewItem Content=&quot;Test 03&quot; /&gt; <br />
&lt;/ListView&gt; <br />
&lt;/StackPanel&gt; <br />
&lt;/Window&gt;</div></div>

</pre>
<p>comment faire pour récupérer la position de Liste en C#</p>
<p>dans notre code nous allons faire appel au composante primaire Canvas</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Double posX = Canvas.GetLeft(this.Liste) ; <br />
Double posY = Canvas.GetTop(this.Liste) ;</div></div>
<p>le tour est joué.</p>
<p>Bien evidement les fonctions setLeft et setTop permettront de repositionner le composant ;0)</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
