[英]WPF Databinding from custom property not updating
我是WPF數據綁定的新手,無法弄清楚它如何從我的viewmodel更新屬性
我有一班叫病人
public string FirstName { get; set; } = "";
public string MiddleName { get; set; } = "";
public string LastName { get; set; } = "";
正在更新患者類別
private Data.Patient patient;
public Data.Patient Patient
{
get { return patient; }
set
{
patient = value;
NotifyPropertyChanged("Patient");
}
}
我的視圖模型上的屬性,該屬性未由患者類更新
public string FullName
{
get { return Patient.LastName + " " + Patient.FirstName + " " + Patient.MiddleName; }
}
我正在嘗試更新TextBlock Text屬性
<TextBlock Text="{Binding FullName}" FontSize="14.667" />
如何將更新從類應用於我的FullName屬性? 當我重新運行應用程序時,將應用更新。
非常感謝
您的問題是您沒有通知UI Fullname
屬性已更改。 從技術上講,它沒有改變,但是取決於其他一些屬性。
這里最簡單的解決方案是針對所有屬性引發NotifyProperty事件。 您無需為此編寫大量代碼,只需在NotifyPropertyChanged();
傳遞null
NotifyPropertyChanged();
private Data.Patient patient;
public Data.Patient Patient
{
get { return patient; }
set
{
patient = value;
NotifyPropertyChanged(null); //informs view that all properties updated
}
}
它將告訴您的模型所有屬性都已更新。
PropertyChanged事件可以通過使用null或String.Empty作為PropertyChangedEventArgs中的屬性名稱來指示對象上的所有屬性均已更改。
將綁定從Text="{Binding FullName}"
更改為應該觸發PropertyChanged-Event的Text="{Binding FullName, Mode="OneWay", UpdateSourceTrigger="PropertyChanged"}"
。
類似於帶有NotifyPropertyChanged(...)
的Patient
屬性,您必須在屬性Fullname更改時通知。 為此,請在以下三個屬性的設置器中調用NotifyPropertyChanged("FullName")
:名字,中間名和姓氏。
還請考慮,NotifyPropertyChanged可以為null,因此使用:
if (NotifyPropertyChanged != null)
NotifyPropertyChanged("FullName");
我似乎無法使其工作。 我將屬性添加到類中,因此對類的任何更改都將通知UI,但仍然無法按我想要的方式工作。 但是我找到了解決方案。
<TextBlock FontSize="14.667">
<TextBlock.Text>
<MultiBinding StringFormat=" {0} {1} {2}">
<Binding Path="Patient.LastName" />
<Binding Path="Patient.FirstName"/>
<Binding Path="Patient.MiddleName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
謝謝您的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.