2012-12-14 57 views
3

我已经导入了wsdl,并且我现在拥有所有客户端类。 我想为wpf绑定目的添加一个额外的(计算)属性到一个类。我想要一个计算属性显示沿服务器(网格)返回的属性(和基于)属性将计算属性添加到wcf客户端进行绑定

对我来说,合乎逻辑的是创建一个部分类,相同的命名空间和相同的类名称作为wcf生成类,以及新的计算属性添加到这个部分类

namespace TestClient.WSCompanySearch //same namespace as the generated class from wsdl 
    { 
     public partial class Company //same class returned by wsdl 
     { 
      public bool IsValid 
      { 
       get { 

        if ((this.CloseDate < DateTime.Now) || (this.Rooms == 0)) 
        { 
         return false; 
        } 
        else 
        { 
         return true; 
        } 
       } 
      }      
     } 
    } 

这额外的属性肯定是存在的,如果我的代码它,我可以看到它,但是当我绑定,这是因为如果自定义属性被忽略。 getter中的断点没有被调用,因此表明它没有被调用。

回答

0

对于需要计算属性的列,使用Converter可能会得到相同的结果。

+0

感谢添加一个私有的设置方法。你是否介意阐述,或者指向一个例子 – Crudler

+0

这是你如何将行绑定到的对象发送给一个转换器http://stackoverflow.com/questions/4335068/wpf-pass-parent-binding-object到转换器和转换器的Convert方法中,你可以插入代码,你将在Getter – dutzu

+0

中假设你没有将网格设置为AutoGenerateColumns,所以你只需要添加一个新的列,其中你指定转换器在你的绑定 – dutzu

0

我的方法最后是正确的。 只是

  1. 我的逻辑的组合是新的物业
  2. 我需要关闭“仅我的代码”调试新类断点工作中不正确。我猜VS认为它是个的一部分生成的代码,想不调试它
0

有同样的问题,我必须为了能够反序列化对象

+0

您可以添加'[XmlIgnore]'属性到自定义财产Deserializer忽略它 –

+0

这是相反的情况,这个问题涉及到,你有一个只读的属性,你想反序列化 –

+0

它适用于我,如我所说。如果我从我在部分类中创建的自定义公共属性中删除这些'[XmlIgnore]'属性,它会在尝试反序列化时给我一个错误。如果我加回来,一切都会好的。我认为这是合理的,因为Xml反序列化器对这些'新'属性一无所知,然后'[XmlIgnore]'做它所说的。 (请原谅我的英语) –

相关问题