如何在没有显式类型转换的情况下从View设置ViewModel的属性

时间:2013-02-19 08:00:29

标签: c# xaml mvvm windows-phone-7.1 mvvm-light

我是mvvm的新手,所以我真的需要你的帮助。

在我的wp7应用程序中,我正在尝试使用MVVM Light工具包。 我有两个视图:“主”和2模式“新”,用于添加一些项目和编辑一些项目。

class Item
{
  public int ID {get; set;}
  public string Name {get; set;}
}

当我从MainView导航到NewView时,如果我想编辑项目,我在查询字符串中添加“Name”参数。 在NewView上我有文本框:

<TextBox Grid.Column="1" Name="txtListName" Text="{Binding ItemName}"/>

NewViewModel:

class NewViewModel
{
  public string ItemName { get; set; }
}

如何在 NewView.xaml.cs 中设置NewView 中没有代码的ItemName属性

(this.DataContext as NewViewModel).ItemName = name;

提前感谢!

1 个答案:

答案 0 :(得分:1)

我已经决定了这个问题。在NewView上我设置为文本框双向绑定:

<TextBox Grid.Column="1" Name="txtListName" Text="{Binding ItemName,Mode=TwoWay}"/>

然后在视图的加载事件中,我设置了此文本框的文本属性:

void NewView_Loaded(object sender, RoutedEventArgs e)
{
    String name;
    if (NavigationContext.QueryString.TryGetValue("Name", out name))
        this.txtListName.Text = name;
}

在设置NewViewModel的属性ItemName之后!