nik*_*owj 7 wpf mvvm mvvm-toolkit
我是MVVM的新手.学习我创建了一个示例应用程序,以便在单击按钮时在文本框中显示消息.在我的代码中,button命令工作正常,但属性未绑定到Textbox.如何使用MVVM将Property绑定到Textbox?
我的代码类似于下面给出的.
视图
<TextBox Name="MessageTextBox" Text="{Binding TestMessage}"/>
<Button Content="Show" Name="button1" Command="{Binding ShowCommand}">
<!-- Command Handler -->
</Button>
Run Code Online (Sandbox Code Playgroud)
查看模型
MyMessage myMessage;
public MainViewModel()
{
myMessage=new MyMessage();
}
//inside the ShowCommand Handler
TestMessage="Hello World";
// A Property to set TextBox Value.
Run Code Online (Sandbox Code Playgroud)
模型
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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
emy*_*bob 12
尝试这样的事情:
视图模型
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!";
Run Code Online (Sandbox Code Playgroud)
模型
public class MyMessage: INotifyPropertyChanged
{
private string testMessage
public string TestMessage;
{
get{ return testMessage; }
set
{
testMessage = value;
this.OnPropertyChanged("TestMessage");
}
}
//INotifyChanged Events
}
Run Code Online (Sandbox Code Playgroud)
XAML
<TextBox Text="{Binding Message.TestMessage, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
Run Code Online (Sandbox Code Playgroud)
我不明白你的代码,但我想你应该修复你的绑定:
<TextBox Name="MessageTextBox" Text="{Binding MyMessage.TestMessage}"/>
Run Code Online (Sandbox Code Playgroud)
哪里MyMessage应该是公共财产MainViewModel
| 归档时间: |
|
| 查看次数: |
26155 次 |
| 最近记录: |