2010-06-30 8 views
0

J'essaie de comprendre comment appeler un wcf dans un modèle asynchrone dans l'objet info-bulle xaml. jusqu'à présent j'ai eu le code suivant dans mon modèle d'élément comboboxappel asynchrone d'un service wcf dans xaml

la zone de liste déroulante a plusieurs itemNames extraites d'une base de données et un toolip apparaît chaque fois que la souris est survolée sur l'un des éléments. J'essaie de montrer plus d'informations sur l'élément plané à l'intérieur de cette info-bulle. C'est ici que j'ai besoin d'appeler le service wcf de manière asynchrone. pourriez-vous s'il vous plaît partager vos idées avec moi sur ce sujet.

<ComboBox.ItemTemplate> 
    <DataTemplate> 
     <TextBlock x:Name="tbTradeName" Text="{Binding}" /> 
     <DataTemplate.Triggers> 
      <Trigger Property="IsMouseOver" SourceName="tbTradeName" Value="True"> 
       <Setter TargetName="tbTradeName" Property="ToolTip"> 
        <Setter.Value> 
         <ToolTip> 
          <ToolTip.Content> 
           <StackPanel Width="300" Height="150" Background="Orange"> 
            <TextBlock Text="{Binding}" /> 
            <StackPanel Width="300" Height="100"> 

            <!-- I need the content from wcf service here --> 

            </StackPanel> 
           </StackPanel> 
          </ToolTip.Content> 
         </ToolTip> 
         </Setter.Value> 
        </Setter> 
        </Trigger> 
       </DataTemplate.Triggers> 
      </DataTemplate> 
      </ComboBox.ItemTemplate> 

au moment de la pensée im d'utiliser le code sous-jacent pour suivre un événement sur l'élément ComboBox puis en quelque sorte charger le contenu dans le panneau. Je vais essayer celui-là, mais je ne suis pas très sûr de l'idée.

Merci.

Répondre

1

Je lierais l'info-bulle à une propriété d'objet implémentant INotifyPropertyChanged. Ainsi, lorsqu'un résultat asyn est reçu de wcf, il met à jour la propriété de l'objet, NotifyPropertyChanged est déclenché et l'info-bulle de mises à jour de la liaison WPF. Déclenchement de la requête async wcf pour la valeur de l'info-bulle dans code-behind dans l'événement Ouvert de l'info-bulle.

+0

Merci, je vais essayer celui-ci. J'ai été en mesure d'aller à mi-chemin sur cette question en utilisant l'approche follwing. J'ai créé un fournisseur de données d'objet dans la section window.resources et l'ai utilisé pour appeler la méthode relavent (se produire en mode synchrone) et obtenir la liste des objets de données du service. Dans le fournisseur de données d'objet, j'ai mis un paramètre de chaîne vide, puis lié ce fournisseur de données au dataContext d'un panneau de pile dans la section Modèle de données montrée ci-dessus. Ce que je dois faire est de changer le paramètre de chaîne sur le fournisseur de données d'objet quand plané sur l'élément de bloc de texte dans le modèle de données. – user377414

Questions connexes