C# 如何将数据从视图传递到viewmodel
我是mvvm新手,我想将textbox.text作为输入传递给服务方法,该方法应该在按钮单击中调用。为此,我编写了以下代码,但无法检索textbox值。 Commands.cs: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
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}"/>
文本框的内容绑定到属性注释,因此您可以使用该属性调用服务方法。文本框的内容绑定到属性注释,因此您可以使用该属性调用服务方法。文本框的内容绑定到属性注释,因此,您可以使用该属性调用服务方法。文本框的内容绑定到属性注释,因此您可以使用该属性调用服务方法。