# Friday, May 23, 2008

[WPF] BitmapEffects et Partial Trust

Le moyen le plus simple de créer une ombre en WPF est d’utiliser un bitmapeffect de type DropShadow.

Certes les bitmapeffect en WPF ça va aussi vite que moi sur un vélo mais bon cela  a le mérite de fonctionner correctement.

Le soucis est qu’il n’est pas possible d’utiliser des bitmapeffect lorsque vous êtes en mode d’exécution Partial Trust (ce qui est le cas par défaut pour des applications XBAP).

Afin d’être capable de quand même implémenter une ombre sans trop de bidouille sachez qu’il est possible d’utiliser les thèmes de Windows (en l’occurrence Aero) afin d’implémenter des ombres. L’avantage est que cela fonctionne en partial trust mais que ça va également beaucoup plus vite.

Exemple :

<UserControl x:Class="Bewise.TrainingCatalog.GUI.Controls.TrainingDetails"

 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

 xmlns:aeroShadow="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" &lt;!—Utilisation des types présents dans l’assembly du thème aero -->

 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Height="300" Width="200" >

<aeroShadow:SystemDropShadowChrome CornerRadius="10,10,10,10">

<Border Background="{StaticResource SLFMainColor}" CornerRadius="10,10,10,10" >

<StackPanel Height="300" Margin="10">

<TextBlock Width="auto" DockPanel.Dock="Bottom"  TextWrapping="Wrap" Style="{StaticResource whiteStrongForeground}">

</TextBlock>

</StackPanel>

</Border>

</aeroShadow:SystemDropShadowChrome>

clip_image002

# Thursday, May 22, 2008

[C#] Méthode Compile sur les expressions lambda

Lorsque l'on fait appel appel à la méthode Compile sur des regex le code généré est chargé dans l'AppDomain courant et de ce fait ne peut être déchargé de la mémoire tant que l'AppDomain est en vie.

La question que l'on est en droit de se poser et de savoir s'il en est de même pour les expressions lambda introduites avec C# 3.

La réponse est simple : Concernant la méthode Compile qui concerne les expressions, la génération du code se base sur les DynamicMethods (http://msdn2.microsoft.com/en-us/library/system.reflection.emit.dynamicmethod.aspx) qui ont la bonne idée de permettre d’indiquer qu’une méthode générée est orpheline (n’est plus référencée) et peut donc être collectée par le garbage collector.

# Tuesday, May 20, 2008

[Astuces] Changer la taille de la police dans Visual Studio

Si vous donnez régulièrement des formations ou des présentations ceci peut vous intéresser :

Il existe plusieurs méthodes pour changer la taille de la police dans Visual Studio :

La méthode j’ai le temps de prendre un café qui consiste à faire un Tools\Options\Environment\Font and colors et changer manuellement la taille de la police.

La méthode j'aime me simplifier la vie qui consiste à créér  une macro qui permet d’avoir le résultat escompté instantanément.

Imports System

Imports EnvDTE

Imports EnvDTE80

Imports EnvDTE90

Imports System.Diagnostics

Public Module Presentation

Public Sub DemoConfig()

        DTE.Properties("FontsAndColors", "TextEditor").Item("FontSize").Value = 16

End Sub

Public Sub WorkingConfig()

        DTE.Properties("FontsAndColors", "TextEditor").Item("FontSize").Value = 10

End Sub

Public Sub Bigger()

        DTE.Properties("FontsAndColors", "TextEditor").Item("FontSize").Value += 1

End Sub

Public Sub Smaller()

        DTE.Properties("FontsAndColors", "TextEditor").Item("FontSize").Value -= 1

End Sub

End Module

Il ne vous reste plus qu’à mettre quelques boutons dans votre barre d’outil afin d’appeler d’un simple clic ces macros. : clip_image002

Vous avez donc accès à un mode présentation qui met la police en gros, un mode travail qui réduit la taille de la police, et même la possibilité d’incrémenter/décrémenter la taille manuellement.