C# 如何将数据从视图传递到viewmodel

C# 如何将数据从视图传递到viewmodel,c#,mvvm,C#,Mvvm,我是mvvm新手,我想将textbox.text作为输入传递给服务方法,该方法应该在按钮单击中调用。为此,我编写了以下代码,但无法检索textbox值。 Commands.cs: private Action<object> _action; public Commands(Action<object> action) { _action = action; } public event EventHandler Can

我是mvvm新手,我想将textbox.text作为输入传递给服务方法,该方法应该在按钮单击中调用。为此,我编写了以下代码,但无法检索textbox值。 Commands.cs:

 private Action<object> _action;
    public Commands(Action<object> action)
    {
        _action = action;
    }

    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter)
    {
        return true;
    }



public void Execute(object parameter)
{
    if (parameter != null)
    {
        _action(parameter);

    }
    else
    {
        _action("Hello World");
    }

}
private Action\u Action;
公共命令(操作)
{
_行动=行动;
}
公共事件处理程序CanExecuteChanged;
公共布尔CanExecute(对象参数)
{
返回true;
}
public void Execute(对象参数)
{
if(参数!=null)
{
_作用(参数);
}
其他的
{
_行动(“你好世界”);
}
}
评论和评级视图模型:

   private ICommand _submitButtonCommand;
        CommentesAndRating model;
        private string Comments;
        public  string _Comments
        {
            get
            {
               // return model._Comments;
                return Comments;
            }
            set
            {
                //model._Comments = value;
                Comments = value;
            }
        }

        public string Rating;
        #region Methods

        //place this command name in the any of view control's commnad
        //like  under submitbutton click of Submit Button in Comment.xaml
        public ICommand SubmitButtonCommand
        {
            get
            {

                return _submitButtonCommand;
            }
            set
            {
                _submitButtonCommand = value;
            }
        }

        public CommentsandRatingViewModel()
        {
           // this.model = new CommentesAndRating();
            SubmitButtonCommand = new Commands(new Action<object>(SubmitCommentsAndRatings));
        }

        public void SubmitCommentsAndRatings(object obj)
        {
            var commnets = _Comments;
            MessageBox.Show("hello");
            //have to call service method here.
        }

     xaml:

     <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
    <TextBox HorizontalAlignment="Left" Name="txt" Text="{Binding Source= {StaticResource viewmodel},Mode=TwoWay,Path=_Comments}"  Height="72" Margin="14,96,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="456"/>
    <Button Command="{Binding SubmitButtonCommand}"  Content="Button" HorizontalAlignment="Left" Margin="119,249,0,0" VerticalAlignment="Top"/>
</Grid>
private ICommand\u submitButtonCommand;
评论和评论模型;
私有字符串注释;
公共字符串\u注释
{
得到
{
//返回模型。\u注释;
返回评论;
}
设置
{
//模型。_注释=值;
评论=价值;
}
}
公共字符串评级;
#区域方法
//将此命令名放在视图控件的任意命令中
//与Comment.xaml中的submitbutton类似,单击Submit按钮
公共ICommand提交按钮命令
{
得到
{
返回_submitButtonCommand;
}
设置
{
_submitButtonCommand=值;
}
}
公共评论和评级视图模型()
{
//this.model=新注释sandrating();
SubmitButtonCommand=新命令(新操作(SubmitCommons和Ratings));
}
公共无效提交建议和评级(对象obj)
{
var commnets=_注释;
MessageBox.Show(“你好”);
//必须在这里调用服务方法。
}
xaml:
您需要实现该接口才能使绑定正常工作。 之后,您可以使用属性
\u Comment
获取服务方法所需的值

请注意:不要在属性名称前加下划线。 这将使许多阅读您的代码的人感到困惑。 最好在C#中使用区分大小写:

但是,如果您确实觉得需要使用下划线,请将其用作支持字段,而不是属性

您需要实现接口以使绑定工作。 之后,您可以使用属性
\u Comment
获取服务方法所需的值

请注意:不要在属性名称前加下划线。 这将使许多阅读您的代码的人感到困惑。 最好在C#中使用区分大小写:

但是,如果您确实觉得需要使用下划线,请将其用作支持字段,而不是属性

您需要实现接口以使绑定工作。 之后,您可以使用属性
\u Comment
获取服务方法所需的值

请注意:不要在属性名称前加下划线。 这将使许多阅读您的代码的人感到困惑。 最好在C#中使用区分大小写:

但是,如果您确实觉得需要使用下划线,请将其用作支持字段,而不是属性

您需要实现接口以使绑定工作。 之后,您可以使用属性
\u Comment
获取服务方法所需的值

请注意:不要在属性名称前加下划线。 这将使许多阅读您的代码的人感到困惑。 最好在C#中使用区分大小写:


但是,如果您确实觉得需要使用下划线,请将其用作支持字段,而不是属性

在TextBox.Text属性和您的Comments属性之间进行双向数据绑定,这样UI就可以将该值向下推送到您的ViewModel中

<TextBox Text="{Binding Comments, Mode=TwoWay}"/>

在TextBox.Text属性和Comments属性之间进行双向数据绑定,这样用户界面就可以将该值向下推送到ViewModel中

<TextBox Text="{Binding Comments, Mode=TwoWay}"/>

在TextBox.Text属性和Comments属性之间进行双向数据绑定,这样用户界面就可以将该值向下推送到ViewModel中

<TextBox Text="{Binding Comments, Mode=TwoWay}"/>

在TextBox.Text属性和Comments属性之间进行双向数据绑定,这样用户界面就可以将该值向下推送到ViewModel中

<TextBox Text="{Binding Comments, Mode=TwoWay}"/>


文本框的内容绑定到属性注释,因此您可以使用该属性调用服务方法。文本框的内容绑定到属性注释,因此您可以使用该属性调用服务方法。文本框的内容绑定到属性注释,因此,您可以使用该属性调用服务方法。文本框的内容绑定到属性注释,因此您可以使用该属性调用服务方法。