在xaml中异步调用wcf服务

时间:2010-06-30 11:44:13

标签: wpf wcf asynchronous tooltip

我正在试图弄清楚如何在xaml tooltip对象中以异步模式调用wcf。到目前为止,我在我的组合框项目模板

中得到了以下代码

组合框有几个从数据库中提取的itemNames,只要鼠标悬停在任何项目上,就会出现工具包。我正在尝试在工具提示中显示有关悬停项目的更多信息。这是我需要以异步方式调用wcf服务的地方。请你就此事与我分享你的想法。

<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>

目前我正在考虑使用后面的代码来跟踪组合框项目上的某些事件,然后以某种方式将内容加载到面板中。我会尝试那个,但我不太确定这个想法。

谢谢。

1 个答案:

答案 0 :(得分:1)

我将工具提示绑定到实现INotifyPropertyChanged的对象的属性。因此,当从wcf收到asyn结果时,它会更新对象属性,触发NotifyPropertyChanged并且WPF绑定更新工具提示。 在Tooltip的Opened事件中,在代码隐藏中触发wcf工具提示值的异步请求。