我是sliverlight和MVVM的初學者。 我無法將使用MVVM的另一個類的textblock屬性綁定到UI類。無法使用MVVM將另一個類的textblock屬性綁定到UI類
我的代碼在這裏。 請讓我知道如何綁定下面的Authentication.cs中的textblock屬性。
MainPage.xaml中
<TextBlock Height="30" Margin="122,218,0,0" Name="textBlock3" Text="{Binding Path=ErrorStatus, Mode=TwoWay}" VerticalAlignment="Top" HorizontalAlignment="Left" Width="86" />
MainPage.xaml.cs中
private Authentication authentication;
// Constructor
public MainPage()
{
InitializeComponent();
this.DataContext = authentication;
}
ViewModelBase.cs
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
Authentication.cs
public class Authentication : ViewModelBase
{
private string _ErrorStatus;
public string ErrorStatus
{
get
{
return _ErrorStatus;
}
set
{
_ErrorStatus = value;
NotifyPropertyChanged("ErrorStatus");
}
}
void Authenticate()
{
//Here, I write authentication code....
//After the authentication code, I want to change textBlock property depend on auth status.
//Please let me know how to write code.
}
}
我在MainPage.xaml的Button(button1_click)中調用Authentication()實例。 所以,我無法更改屬性,如果我添加this.authentication = new Authentication();. void Authenticate() { //在這裏,我寫認證代碼.... //認證碼後,我想改變textBlock屬性取決於身份驗證狀態。 //請讓我知道如何編寫代碼。 //我添加了波紋管代碼。但我無法改變財產。 ErrorStatus =「訪問被拒絕」。 } – okame100
爲什麼不呢?一旦DataContext設置正確(在構造函數中,按鈕點擊代碼之前),更新viewmodel將導致綁定將值推送到'TextBlock'。 – dlev
@okame您想要在構造函數中添加該行,而不是在Authenticate中。一旦該行被添加到構造函數中,您將不需要對Authenticate進行任何更改(除了向ErrorStatus分配新值) – dlev