您知道何时将表从dataSources窗口拖放到用户控件上? Visual Studio自动创建一个datacontext(在视图的xaml中)以将页面上的新元素绑定到。此dataContext设置为collectionViewSource,此collectionViewSource从数据集中提取它的信息。在拖放时从表中获取的相同数据集。
在我的场景中,这就是它创造的内容:
<UserControl.Resources>
<CollectionViewSource x:Key="signupsViewSource" Source="{Binding signups, Source={StaticResource myAppnDataSet}}/>
</UserControl.Resources>
<Grid DataContext="{StaticResource signupsViewSource}">
<TextBox x:Name="idTextBox" Text="{Binding id, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox x:Name="firstnameTextBox" Text="{Binding firstname, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox x:Name="surnameTextBox" Text="{Binding surname, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox x:Name="usernameTextBox" Text="{Binding username, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox x:Name="passwordTextBox" Text="{Binding password, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
它应该是一个非常简单的注册页面,管理员可以通过简单地滚动,点击批准按钮或点击拒绝按钮来批准和拒绝注册。
事情是我使用MVVM模式。这意味着上面的textBoxes绑定的属性位于collectionViewSource类中,这是我的问题所在。
我需要在“注册”中保存相同的信息。表,到用户表。
我到目前为止尝试的是以下方法,该方法应该将注册表中的信息保存到users表中:
private object SaveCurrent_CommandExecute(object param)
{
myAppEntities context = new myAppEntities();
myApp.signup Signup = new signup();
try
{
myApp.user User = new Medcare2.user
{
firstname = Signup.first,
surname = Signup.last,
username = Signup.username,
password = Signup.password,
};
// Persist Changes to database
context.users.Add(User);
context.SaveChanges();
MessageBox.Show("Saved");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
上述方法的问题在于它创建了一个新的注册类I实例,因此我抓取的属性中的所有信息都是空的。所以我得到验证错误。基本上。任何帮助将不胜感激。
答案 0 :(得分:1)
您需要在调用Signup
命令的任何控件上将所选CommandParameter
对象作为SaveCurrent
传递。然后,您可以将object param
转发回Signup
并从中提取值。