silverlight + MVVM中文本框的值

时间:2011-07-07 16:21:33

标签: mvvm textbox

我有一个名为Customer.xaml的xaml,如下所示:

<Grid x:Name="customview" >
   <StackPanel x:Name="CustomPanel" > 
      <TextBox x:Name="CustomText" />
    </StackPanel>
</Grid

使用MVVM我创建了ICustomerviewmodel和Customerviewmodel,如下所示:

public interface ICustomerviewmodel 
{
     ICommand SaveClientCommand { get; }
}

public class Customerviewmodel : ICustomerviewmodel , INotifyPropertyChanged
{
   ......
   private void ExecuteSaveClient()
   {
     //
   }

我的问题是如何才能获得价值 在函数Exec​​uteSaveClient()里面保存这个?

2 个答案:

答案 0 :(得分:1)

使用绑定表达式:

<TextBox x:Name="CustomText" Text="{Binding TestProperty}" />

TestProperty是您的视图模型上的公共属性,即当前DataContext

如果您希望更新视图模型中的值,并将其反映在视图中,那么TestProperty属性的setter应调用PropertyChanged上的INotifyPropertyChanged事件由视图模型实现的接口。

答案 1 :(得分:1)

  • 您应该在视图模型中声明一个字符串属性:

    public string CustomText { get; set; }

  • 将customview的datacontext指定为构造函数中的viewmodel,希望此网格位于UserControl或Window中:

    this.customview.DataContext = new CustomerViewModel();

  • 绑定到该属性:

    <TextBox x:Name="CustomText" Text="{Binding CustomText}"/>

  • 如果需要TwoWay绑定和通知,请实施INotifyPropertyChanged

详细了解silverlight数据绑定here