Как привязать свойство к текстовому полю, используя инструментарий MVVM и MVVM?
Я новичок в MVVM. чтобы узнать, я создал образец приложения, чтобы показать сообщение в текстовом поле, нажимая на кнопку. В моем коде команда кнопки работает правильно, но свойство не привязано к текстовому полю. Как привязать свойство к текстовому полю с помощью MVVM?
Мой код похож на приведенный ниже.
Посмотреть
<TextBox Name="MessageTextBox" Text="{Binding TestMessage}"/>
<Button Content="Show" Name="button1" Command="{Binding ShowCommand}">
<!-- Command Handler -->
</Button>
Посмотреть модель
MyMessage myMessage;
public MainViewModel()
{
myMessage=new MyMessage();
}
//inside the ShowCommand Handler
TestMessage="Hello World";
// A Property to set TextBox Value.
модель
public class MyMessage: INotifyPropertyChanged
{
private string testMessage;
public string TestMessage
{
get { return testMessage; }
set
{
testMessage= value;
OnPropertyChanged("TestName");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
2 ответа
Решение
- в вашей модели у вас есть textMessage как int, а не строка?
попробуйте что-то вроде этого:
ViewModel
private MyMessage message;
public MainViewModel()
{
message = new MyMessage();
}
public MyMessage Message
{
get { return message;}
set { message = value;}
}
//in your command:
this.Message.TestMessage = "Hello World!";
МОДЕЛЬ
public class MyMessage: INotifyPropertyChanged
{
private string testMessage
public string TestMessage;
{
get{ return testMessage; }
set
{
testMessage = value;
this.OnPropertyChanged("TestMessage");
}
}
//INotifyChanged Events
}
XAML
<TextBox Text="{Binding Message.TestMessage, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
Я не понимаю ваш код, но я думаю, что вы должны исправить привязку следующим образом:
<TextBox Name="MessageTextBox" Text="{Binding MyMessage.TestMessage}"/>
куда MyMessage
должно быть публичной собственностью MainViewModel