我有一个绑定到对象的文本块.这个对象我重写了ToString以返回其他2个属性的组合.如何在更新其中一个属性值时通知ToString值已更改?
不幸的是我无法更改绑定到ToString值,因为这是在第三方控件内,所以真的需要能够直接通知.
希望下面的课程定义能澄清我的意思:
public class Person : INotifyPropertyChanged
{
private string firstname;
public string Firstname
{
get { return firstname; }
set
{
firstname = value;
OnPropertyChanged("Firstname");
}
}
private string surname;
public string Surname
{
get { return surname; }
set
{
surname = value;
OnPropertyChanged("Surname");
}
}
public override string ToString()
{
return string.Format("{0}, {1}", surname, firstname);
}
}
Run Code Online (Sandbox Code Playgroud)
我假设当您说控件“绑定”到 ToString() 时,您的对象正在不可访问的代码内的某处用作 ContentControl 上的内容,默认情况下会创建一个显示 ToString 值的 TextBlock (如果您不确定可以与史努比一起找出答案)。如果您在控件的资源中为 Person 类型创建全局类型化 DataTemplate,则可以使用它来显示不同的属性,例如新的 FullName 属性:
<ThirdPartyControl.Resources>
<DataTemplate DataType="{x:Type data:Person}">
<TextBlock Text="{Binding FullName}"/>
</DataTemplate>
</ThirdPartyControl.Resources>
Run Code Online (Sandbox Code Playgroud)