Overblog Suivre ce blog
Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

7 avril 2014 1 07 /04 /avril /2014 14:52

  
Je définis un UserControl simple pour lequel j’ai une propriété texte (d’un TextBlock)  avec laquelle je veux pouvoir intéragir depuis la page principale.

 

Le userControl Silverlight nommé « bubble.xaml »
<Grid x:Name="LayoutRoot" >
        <Ellipse HorizontalAlignment="Left" VerticalAlignment="Top" 
                 Height="150" Width="150"
                 Fill="SkyBlue" Stroke="White" StrokeLineJoin="Round"  />
        <TextBlock x:Name="tb" Foreground="White"  HorizontalAlignment="Center" VerticalAlignment="Center"  />
    </Grid>

 

Dans le code behind du userControl
Le Dependency est déclaré Readonly et static . On définit :
Le nom de la propriété de dépendance à inscrire (ici SetText)
Le type de cette propriété (ici string)
Le type du propriétaire qui inscrit la propriété de dépendance (ici le userControl « Bubble »)
Metadata, pouvant contenir un PropertyChangedCallback (qui pointe ici sur SetNewText,  static avec en premier argument le DependencyObject, en second argument le DependencyPropertyChangedEventArgs)
public partial class Bubble : UserControl
    {
        public Bubble()
        {
            InitializeComponent();
        }
 
        public static readonly DependencyProperty SetTextBoxProperty =
            DependencyProperty.Register("SetText", typeof(string), typeof(Bubble),
            new PropertyMetadata(new PropertyChangedCallback(SetNewText)));
       
        // property accessible
        public string SetText
        {
            get { return (string)GetValue(SetTextBoxProperty); }
            set { SetValue(SetTextBoxProperty, value); }
        }
 
        private static void SetNewText(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            (d as Bubble).tb.Text = e.NewValue.ToString();
        }
    }

 

MainPage.xaml 
J’ai accès à ma propriété SetText dans le Xaml
  <Grid x:Name="LayoutRoot" Background="White">
        <View:Bubble x:Name="bubble1" SetText="Coucou !" HorizontalAlignment="Left" Margin="155,22,0,0" VerticalAlignment="Top"/>
 
    </Grid>

 

      En C# dans le code behind  

   bubble1.SetText = "Coucou !";
Repost 0
Published by Romagny13 - dans Silverlight
commenter cet article
10 février 2014 1 10 /02 /février /2014 14:59
Repost 0
Published by Romagny13 - dans Silverlight
commenter cet article
10 février 2014 1 10 /02 /février /2014 01:56

NET RIA Services :

Accès aux données          
Service et Code métier
 
                            IHM et Code métier
Côté serveur
Côté client



1 Créer un projet Silverlight (ne pas cocher « activer les services RIA WCF »)
ria1.png
 

2 Ajouter un nouvel élément > Service WCF

ria2.png


3 définir le contrat

[ServiceContract] pour l’interface
[OperationContract] pour les méthodes

 

  [ServiceContract]
    public interface IClientService
    {
        [OperationContract]
        List<Client> GetClients();
    }

 

4 Classe ClientService implémentant le contrat

 

public class ClientService : IClientService
    {
        public List<Client> GetClients()
        {
            List<Client> clients = new List<Client>();
            SqlConnection connection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=DbDemo;Integrated Security=True");
 
            using (SqlCommand command = connection.CreateCommand())
            {
                command.CommandType = CommandType.Text;
                command.CommandText = "select * from Client";
                connection.Open();
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Client client = new Client();
                        client.Id = reader["Id"] == DBNull.Value ? default(int) : int.Parse(reader["Id"].ToString());
                        client.Name = reader["Name"] == DBNull.Value ? default(string) : reader["Name"].ToString();
                        client.Email = reader["Email"] == DBNull.Value ? default(string) : reader["Email"].ToString();
                        client.CategoryId = reader["CategoryId"] == DBNull.Value ? default(int) : int.Parse(reader["CategoryId"].ToString());
 
                        clients.Add(client);
 
                    }
                }
                   
            }
            connection.Close();
            return clients;
        }
 
    }

 

 Générer le projet *.Web

 

Noter l’adresse du service (clic droit sur *.svc > voir dans l’inspecteur de la page)

Web.config

 

<system.serviceModel>

        <behaviors>

            <serviceBehaviors>

                <behavior name="">

                    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />

                    <serviceDebug includeExceptionDetailInFaults="false" />

                </behavior>

            </serviceBehaviors>

        </behaviors>

        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"

            multipleSiteBindingsEnabled="true" />

    </system.serviceModel>

 

 

5 Dans le projet IHM Silverlight
Ajouter une référence de service  > indiquer l’adresse du service
 
 
ria3.png
La référence ainsi qu’un fichier de configuration sont ajoutés

 

<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IClientService" maxBufferSize="2147483647"
                    maxReceivedMessageSize="2147483647">
                    <security mode="None" />
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="../ClientService.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IClientService" contract="ServiceReference1.IClientService"
                name="BasicHttpBinding_IClientService" />
        </client>
    </system.serviceModel>
</configuration>



Utilisation (affichage de la liste dans un datagrid)
MainPage

 

   public MainPage()
        {
            InitializeComponent();
 
            ClientServiceClient service = new ClientServiceClient();
            service.GetClientsCompleted += service_GetClientsCompleted;
 
            service.GetClientsAsync();
           
        }
 
        void service_GetClientsCompleted(object sender, GetClientsCompletedEventArgs e)
        {
            dgClients.ItemsSource = e.Result;
        }

 

Xaml

 

<Grid x:Name="LayoutRoot" Background="White">
 
        <sdk:DataGrid Name="dgClients" HorizontalAlignment="Left" Height="253" Margin="10,20,0,0" VerticalAlignment="Top" Width="371"/>
 
    </Grid>



ria4.png

 

Note : SvcUtile.exe se trouve dans C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\
  ressources

Silverlight toolkit(bibliothéque de controls) http://codeplex.com/Silverlight
Exemples de codes dans C:\Program Files (x86)\Microsoft SDKs\Silverlight
Cours http://www.dotnet-france.com/Cours/Silverlight.html Exemples de codes Silverlight dans browser  http://samples.msdn.microsoft.com/silverlight/samplebrowser/index.htm#/?sref=easing_functions_gallery&sref=DeepZoomSimpleZoom_InOnly

   
 
Repost 0
Published by Romagny13 - dans Silverlight
commenter cet article