Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[WPF] Comment appeler une méthode depuis du code XAML ?

Beaucoup de gens se demande s'il est possible d'appeler une méthode depuis son code XAML. Par exemple, comment appeler une méthode d'un Web Service directement depuis son XAML ?

Il est possible d'y parvenir en utilisant un ObjectDataProvider. Prenons l'exemple de la classe suivante:

public class BusinessClass

{

    public string SayHelloToSomeOne(string someone)

    {

        return !string.IsNullOrEmpty(someone) ? string.Format("Hello {0}", someone) : "Hello everybody";

    }

}

Comment parvenir à appeler cette méthode depuis un ObjectDataProvider ? Tout simplement en spécifiant les propriétés ObjectType et MethodName de notre objet:

<ObjectDataProvider x:Key="odp" ObjectType="local:BusinessClass" MethodName="SayHelloToSomeOne">

    <ObjectDataProvider.MethodParameters>

        <s:String>Thomas</s:String>

    </ObjectDataProvider.MethodParameters>

</ObjectDataProvider>

A noter qu'il est possible d'utiliser la propriété ObjectInstance pour se lier à une instance déjà existante.

Ensuite, dans votre code XAML, il ne vous reste plus qu'à vous lier à votre objet, via un petit binding:

<TextBlock x:Name="tb" Grid.Row="0" Text="{Binding Source={StaticResource odp}}" />

De plus, si vous souhaitez modifier les paramètres de la méthode appellée, il vous convient d'accéder, par code, à votre ObjectDataProvider:

private void btn_Click(object sender, RoutedEventArgs e)

{

    var odp2 = Resources["odp"] as ObjectDataProvider;

    if (odp2 != null)

    {

        odp2.MethodParameters[0] = string.Empty;

        odp2.Refresh();  

    }

}

Et le tour est joué Smile

 

A+

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mercredi 18 juin 2008 10:50 par Thomas LEBRUN
Classé sous : ,

Commentaires

romain verdier a dit :

J'ai un peu de mal à voir l'utilité de cette technique... Aurais-tu un exemple dans lequel elle est la seule solution, ou bien la meilleure solution ?

Merci !

# juin 18, 2008 11:06

Thomas LEBRUN a dit :

Bonjour Romain,

Je n'ai pas vraiment d'idées pour le moment: c'est jusque qu'on me posait souvent la question donc je préférais éclaircir la chose. Maintenant, à chacun de trouver sa propre raison de faire une telle chose ;)

# juin 18, 2008 14:11

The_badger_man a dit :

Par exemple, tu veux faire une listebox avec la liste des cultures disponibles (ou la liste des couleurs, etc.). Pas besoin de passer par du code, que du XAML:

<Window x:Class="WindowsApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowsApplication1" Height="300" Width="300" xmlns:global="clr-namespace:System.Globalization;assembly=mscorlib">

   <Window.Resources>

       <ObjectDataProvider x:Key="CulturesProvider" ObjectType="{x:Type global:CultureInfo}" MethodName="GetCultures">

           <ObjectDataProvider.MethodParameters>

               <global:CultureTypes>AllCultures</global:CultureTypes>

           </ObjectDataProvider.MethodParameters>

       </ObjectDataProvider>

   </Window.Resources>

   <Grid>

       <ListBox ItemsSource="{Binding Source={StaticResource CulturesProvider}}" />

   </Grid>

</Window>

# juin 19, 2008 21:03
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le 10-11-2008, 21:55

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35

- MVC Pratique #07 - Un projet concret et le transfert des objets avec les ModelBinders par #Rui le 10-09-2008, 23:39

- SQL Server 2008 : Certifié - TS Admin (70-432) par SQL Server vu par Christian Robert le 10-09-2008, 10:58

- [WPF] Comment changer la couleur utilisée pour sélectionner les éléments d’un ItemsControl ? par Thomas Lebrun le 10-09-2008, 10:49

- Hello World! par Hamid's Place le 10-08-2008, 23:38

- SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-08-2008, 15:52