0

是否可以綁定到類內的屬性?你如何綁定到類屬性?

說我在我的視圖模型這樣的屬性(我的ViewModel從BindableBase繼承)

private PointOfView _userPointOfView; 
    public PointOfView UserPointOfView 
    { 
     get { return _userPointOfView; } 
     set{ SetProperty(ref _userPointOfView, value); } 
    } 

凡PointOfView類有一些財產說叫「UserString」

而且在我的應用程序的字符串變量我設置的DataContext我這樣

public MainPage() 
    { 
     this.InitializeComponent(); 
     DataContext = App.ViewModel; 


     PointOfView POV = bew PointOfView(); 
     POV.UserString = "Test"; 
     App.ViewModel.UserPointOfView = POV; 

    } 

我想在我的XAML做的是一樣的東西

<TextBlock Text="{Binding UserPointOfView.UserString, Mode="OneWay"}"></TextBlock> 

無論如何,我試過類似的東西,但它永遠不會更新xaml頁面上的文本塊。

有誰知道是否有辦法做到這一點?這會更容易一些,並且在我的ViewModel中節省了很多代碼重複,而不是爲類內的每個屬性創建這麼多的屬性。

回答

1

這是可能的,並且綁定到'嵌套'屬性非常常見。如果您的界限值沒有出現,那麼您可能沒有正確設置DataContext。使用調試輸出窗口提示什麼不能正確綁定。另外,如果你的PointOfView類沒有實現INotifyPropertyChanged,那麼你的綁定不會自動更新。它只會顯示綁定建立時第一次出現的值。

+0

你是指我想要數據的類中的每個屬性都需要實現INotifyPropertyChanged? – erotavlas

+0

不,PointOfView(主機)類需要實現這個接口。 – BTownTKD

+1

因此,否則我需要更新整個類像這樣App.ViewModel.UserPointOfView = POV;每次它內部的一個屬性改變? (即,如果我沒有在該類上實現INotifyPropertyChanged) – erotavlas