none
关于InvokeOperation RRS feed

  • 问题

  • 在DomainServices里自定义了:
            [Invoke]//
            public decimal GetCompetitorsPrice(Product product)
            {
                //返回对手的价格
                return product.ListPrice * 0.95m;
            }

    MainPage.xaml.cs:

            private void productsGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                Product selectedProduct = (Product)productsGrid.SelectedItem;
                if (selectedProduct != null)
                {
                    catalog.GetCompetitorsPrice(selectedProduct,
                     (invokeOperation) =>
                     {
                         compPrice.Text = invokeOperation.Value.ToString();
                     }, null);//这个使用传递回调函数的方式,compPrice.Text可以得到正确的值,就是写法太麻烦了

                    //下面写法简单是直接绑定到InvokeOperation.Value,commPrice.Text的值却为0,请问错在哪里??????请各位大大指点,谢谢
                    //InvokeOperation<decimal> invokeOp = catalog.GetCompetitorsPrice(selectedProduct);
                    //compPrice.Text = invokeOp.Value.ToString();

                }

            }

    2010年8月27日 14:27

答案

  • catalog.GetCompetitorsPrice(selectedProduct);

    是一个异步的方法,它不能直接返回数值。在它返回前,主程序已经运行了compPrice.Text = invokeOp.Value.ToString();

    • 已标记为答案 xmf16 2010年9月11日 10:02
    2010年8月29日 14:21
  • 通过异步调用获取数据,是还是使用其回调函数比较安全。对于InvokeOperation<bool>,我想false是默认值吧。

    Mog Liang
    • 已标记为答案 xmf16 2010年9月11日 10:02
    2010年9月3日 7:55

全部回复

  • catalog.GetCompetitorsPrice(selectedProduct);

    是一个异步的方法,它不能直接返回数值。在它返回前,主程序已经运行了compPrice.Text = invokeOp.Value.ToString();

    • 已标记为答案 xmf16 2010年9月11日 10:02
    2010年8月29日 14:21
  •  我在DomainServices里又自定义了:

             public bool islogin()
                {
                    return "chenkai".Equals("chenkaige");//设定返回结果为False
                }

    MainPage.xaml.cs:

            public MainPage()
            {
                InitializeComponent();

                InvokeOperation<bool> getresinvoke = catalog.islogin();

                 compPrice.Text=getresinvoke.Value.ToString();

           //这个也是直接绑定到InvokeOperation.Value,commPrice.Text得到的值为false,成功!请问这次又为什么能成功取到值呢?

            }

    2010年8月30日 5:56
  • catalog.GetCompetitorsPrice(selectedProduct);

    是一个异步的方法,它不能直接返回数值。在它返回前,主程序已经运行了compPrice.Text = invokeOp.Value.ToString();


    那为什么下面的compPrice.Text可以取到值呢?    

            InvokeOperation<bool> getresinvoke = catalog.islogin();

    compPrice.Text=getresinvoke.Value.ToString();

    2010年8月31日 3:36
  • 通过异步调用获取数据,是还是使用其回调函数比较安全。对于InvokeOperation<bool>,我想false是默认值吧。

    Mog Liang
    • 已标记为答案 xmf16 2010年9月11日 10:02
    2010年9月3日 7:55