Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定中的多态性?_C#_Windows Phone 7_Data Binding_Polymorphism - Fatal编程技术网

C# 绑定中的多态性?

C# 绑定中的多态性?,c#,windows-phone-7,data-binding,polymorphism,C#,Windows Phone 7,Data Binding,Polymorphism,我有一个POCO对象(具有许多公共字段的公共类) 现在我需要呈现一个对象名称列表,但有一个条件:根据bool,应该使用name1或name2。所以,我创建了继承类并在其中添加了一些功能 public class Item : Poco { public string Name { get { return isName1Used ? name1 : name2; } } 我现在如何对绑定引擎说它应该绑定到名称 <TextBlock Text="{B

我有一个POCO对象(具有许多公共字段的公共类)

现在我需要呈现一个对象名称列表,但有一个条件:根据bool,应该使用name1或name2。所以,我创建了继承类并在其中添加了一些功能

public class Item : Poco
{
    public string Name
    {
        get { return isName1Used ? name1 : name2; }
    }
我现在如何对绑定引擎说它应该绑定到名称

<TextBlock Text="{Binding Name}"/>


它说,在Poco中找不到名称(很公平,因为引擎不知道它可以将Poco变形为项目)

那么,您必须将
而不是
Poco
元素绑定到视图。多态性不是隐式的,因为您创建了一个继承的类,您需要实际构造该类的实例并绑定它们

var pocos=newlist();
var items=pocos.Select(i=>newitem
{
name1=i.name1,
name2=i.name2,
isName1Used=i.isName1Used
});

Hm。。也许我应该为项目创建一个构造函数?Kinda项(Poco Poco){name1=Poco.name1;***}。但这看起来像作弊:)我更喜欢一种方式,告诉绑定引擎Poco是项目的基础。你们可以简化事情。我只是陈述了这个概念。嗯。。也许转换器能帮上忙?这将需要Poco和返回项目。它会慢得多吗?感觉会慢得多吗?你有一个四核GHz处理器来执行一些ifs,我相信它可以处理它。我有一个旧的好Lumia 800,它应该可以处理它。我的意思是,从你的角度来看,使用转换器有意义吗?
<TextBlock Text="{Binding Name}"/>
var pocos = new List<Poco>();
var items = pocos.Select(i=>new Item
                         {
                            name1 = i.name1,
                            name2 = i.name2,
                            isName1Used = i.isName1Used
                         });