簡體   English   中英

來自自定義屬性的WPF數據綁定未更新

[英]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
     }
}

它將告訴您的模型所有屬性都已更新。

MSDN:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM