【问题标题】:How To Bind a Property to Textbox using MVVM and MVVM toolkit?如何使用 MVVM 和 MVVM 工具包将属性绑定到文本框?
【发布时间】:2012-02-29 21:10:35
【问题描述】:

我是 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));
        }
    }

}

【问题讨论】:

  • 请发布更多代码,因为您发布的代码可能会被错误解释。您的 VM 中是否有单独的 TestMessage 属性来公开模型的 TestMessage?
  • 不,没有。那是错误。从此处发布的答案中,我了解了如何执行此操作。谢谢。

标签: wpf mvvm mvvm-toolkit


【解决方案1】:
  • 在您的模型中,您的 textMessage 是一个 int 而不是字符串?

试试这样的:

视图模型

 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}"/>

【讨论】:

    【解决方案2】:

    我不明白你的代码,但我想你应该用这个来修复你的绑定:

    <TextBox Name="MessageTextBox" Text="{Binding MyMessage.TestMessage}"/>
    

    其中MyMessage 应该是MainViewModel 的公共属性

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 1970-01-01
      • 2012-07-11
      • 2011-05-20
      • 2014-09-29
      • 2011-08-23
      • 2015-10-16
      • 1970-01-01
      • 2020-04-19
      相关资源
      最近更新 更多