我有两个问题(请注意,我在回答问题时遵循 MVVM):
(1)如何通过关闭当前打开的 MainWindow.xaml 表单(此按钮单击使用 MVVM 绑定)来从按钮单击打开此“tableView.xaml”视图?
这里是我的按钮单击代码,新窗体必须在这里打开(通过关闭当前的 MainWindow.xaml),因此我猜测打开 tableView.xaml 的代码必须在这里:
public void SaveExecuted() //some where here i have to open "tableView.Xaml"
{
System.Windows.MessageBox.Show(string.Format("Saved: {0} {1} ", DB_Col.DbName, DB_Col.NumTables));
}
public ICommand SavePersonCommand
{
get
{
if (savePersonCommand == null)
savePersonCommand = new DelegateCommand(new Action(SaveExecuted), new Func<bool>(SaveCanExecute));
return savePersonCommand;
}
}
但是如何实现呢?
(2) "tableView.Xaml"必须包含GUI,该GUI将根据以前在MainWindow.xaml上通过“保存按钮”接收的输入动态编写c#代码,并且必须添加到tableView.Xaml中。那么应该在哪里编写C#代码,使得这个C#代码生成的GUI将被渲染到tableView.Xaml上呢?
总结: 请问是否能告诉我如何从按钮点击打开tableView.Xaml以及如何将GUI追加/渲染到tableView.Xaml上(我知道如何编写C#代码来生成GUI,但要在符合MVVM规则的情况下编写代码以便在tableView.Xaml上呈现GUI)。
编辑: 我感觉亲爱的帮助者们仍然不能理解我试图做什么,所以请看以下更详细的说明:
我要做的事情是: 我有一个MainWindow.xaml,其中包含文本框“输入表格数量”,它正在接收用户输入(作为他要创建的表格数)。用户在输入此输入后,将单击保存按钮。现在,保存按钮必须关闭MainWindow.xaml并启动新用户控件“tableView.xaml”。假设他输入4并保存。现在,在新启动的tableView.xaml中,我必须显示文本框,该文本框将接收“表名称”,“列数”,如果他为“列数”输入3,则应该还有3个文本框来接收每个列的名称和数据类型以及最后的主键和保存按钮。
并且此GUI现在必须重复4次,因为在Mainwondow.xaml中,用户在开始时输入了4个“表格数量”。因此,我们必须针对“tableView.xaml”中的每个表格条目重复此GUI 4次,因此我正在编写C#代码来生成GUI,并且在从C#代码获取GUI后将渲染该GUI到tableView.xaml上。现在你明白了吗?如果您知道使用MVVM的其他方法,请给我一个小样本。
通过使用C#代码动态生成GUI意味着我必须执行以下操作:
现在,当我从MainWindow.xaml中获得用户输入时,我将重复下面的GUI 4次(在一个大容器内的for循环中),并将其渲染到tableView.Xaml上(我这样做是因为我必须根据MainWindow.xaml表单中用户的选择动态重复它)。
StackPanel stp = new StackPanel();
TextBlock txt1 = new TextBlock();
stp.Children.Add(txt1);
这个stp必须转到tableView.xaml,并且必须呈现4个stackpanel,每个包含textblock。