如何在绑定时设置操作 Content 属性?
How to set manipulate Content property while binding?
假设我们有以下模板。
<DataTemplate>
<CheckBox Content="{Binding FirstName}"/>
</DataTemplate>
父控件绑定到 Blipp 类型的静态属性,定义如下。
class Blipp
{
public int Id { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
}
如果我希望复选框显示全名怎么办?好吧,我可以定义一个新属性并像这样绑定到它。
public String FullName { get { return FirstName + LastName; } }
<CheckBox Content="{Binding FirstName}" />
但这只是隐藏了真正的问题。如果我想自由操纵Content的内容怎么办?有一天,也许我希望文本是另一回事。像这样继续添加额外的属性真的有必要吗?
public String Text1 { get { return FirstName + Id; } }
public String Text2 { get { return LastName + Id; } }
public String Text3 { get { return Id + ") " + FullName; } }
...
相反,我希望能够自定义 Content 属性。我尝试执行以下操作,但编译器不允许我这样做。
<DataTemplate>
<CheckBox Content="{Binding FirstName} + {Binding Id}"/>
</DataTemplate>
可能吗?怎么样?
您需要一个多值转换器
我知道 link 不鼓励只回答,但 link 有一个确切问题的例子,link 到 msdn 不会死
假设我们有以下模板。
<DataTemplate>
<CheckBox Content="{Binding FirstName}"/>
</DataTemplate>
父控件绑定到 Blipp 类型的静态属性,定义如下。
class Blipp
{
public int Id { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
}
如果我希望复选框显示全名怎么办?好吧,我可以定义一个新属性并像这样绑定到它。
public String FullName { get { return FirstName + LastName; } }
<CheckBox Content="{Binding FirstName}" />
但这只是隐藏了真正的问题。如果我想自由操纵Content的内容怎么办?有一天,也许我希望文本是另一回事。像这样继续添加额外的属性真的有必要吗?
public String Text1 { get { return FirstName + Id; } }
public String Text2 { get { return LastName + Id; } }
public String Text3 { get { return Id + ") " + FullName; } }
...
相反,我希望能够自定义 Content 属性。我尝试执行以下操作,但编译器不允许我这样做。
<DataTemplate>
<CheckBox Content="{Binding FirstName} + {Binding Id}"/>
</DataTemplate>
可能吗?怎么样?
您需要一个多值转换器
我知道 link 不鼓励只回答,但 link 有一个确切问题的例子,link 到 msdn 不会死