C# 如何使用WPF-MVVM动态生成GUI

C# 如何使用WPF-MVVM动态生成GUI,c#,wpf,xaml,user-interface,mvvm,C#,Wpf,Xaml,User Interface,Mvvm,我正在严格使用MVVM开发wpf应用程序。我想做的是弹出一个窗口,点击按钮就会弹出 此窗口大小将根据我在单击按钮时从上一次表单提交中收到的输入动态确定。 如果给定的输入是1,那么在这个窗口上我将有如下GUI:(其中*表示边界) 如何使用MVVM方法实现这一点?我应该使用c#为其编码吗(因为输入将动态给出) 我所做的是(tableView.xaml,其中将包含我之前向您展示的GUI): 我的按钮点击功能(MVVM)如下: public ICommand SavePersonCommand

我正在严格使用MVVM开发wpf应用程序。我想做的是弹出一个窗口,点击按钮就会弹出

此窗口大小将根据我在单击按钮时从上一次表单提交中收到的输入动态确定。 如果给定的输入是1,那么在这个窗口上我将有如下GUI:(其中*表示边界)

如何使用MVVM方法实现这一点?我应该使用c#为其编码吗(因为输入将动态给出)

我所做的是(tableView.xaml,其中将包含我之前向您展示的GUI):


我的按钮点击功能(MVVM)如下:

 public ICommand SavePersonCommand
  {
            get
            {
                if (savePersonCommand == null)
                    savePersonCommand = new DelegateCommand(new Action(SaveExecuted), new Func<bool>(SaveCanExecute));
                return savePersonCommand;
            }
  }
public bool SaveCanExecute()
  {
            return !string.IsNullOrEmpty(DB_Col.DbName) && !string.IsNullOrEmpty(DB_Col.NumTables);
  }
public void SaveExecuted()
  {
                System.Windows.MessageBox.Show(string.Format("Saved: {0} {1} ", DB_Col.DbName, DB_Col.NumTables));
   }
public ICommand和SavePersonCommand
{
收到
{
if(savePersonCommand==null)
savePersonCommand=newdelegateCommand(新操作(SaveExecuted)、新函数(SaveCanExecute));
返回savePersonCommand;
}
}
公共bool SaveCanExecute()
{
return!string.IsNullOrEmpty(DB_Col.DbName)和&!string.IsNullOrEmpty(DB_Col.NumTables);
}
public void SaveExecuted()
{
Show(string.Format(“保存:{0}{1}”,DB_Col.DbName,DB_Col.NumTables));
}

如果我的方法是正确的,如何使用c#following MVVM动态呈现网格中的数据

自我提升插件:我在代码项目网站上写道,听起来你在寻找非模态对话框。@MarkFeldman tahnsk寻求答案,但你已经讨论了对话框……请再次查看问题。xavxav你说你需要“弹出一个窗口”我把它理解为一个无模式对话框,即一个可以与父窗口同时交互的顶级窗口,以及一个在父窗口关闭时也将关闭的窗口,我的文章对此进行了详细介绍。如果这不是你想要的,那么请澄清你的具体要求,我会尽我所能建议替代技术。干杯
<UserControl x:Class="DBPythonAndXmlGenerator.View.tableView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300"
             xmlns:local="clr-namespace:DBPythonAndXmlGenerator.ViewModel"
             xmlns:converters="clr-namespace:DBPythonAndXmlGenerator.converters"
             >
    <UserControl.Resources>
        <converters:Table x:Key="TableCoverter" />
    </UserControl.Resources>
    <Grid>                
    </Grid>
</UserControl>
 public ICommand SavePersonCommand
  {
            get
            {
                if (savePersonCommand == null)
                    savePersonCommand = new DelegateCommand(new Action(SaveExecuted), new Func<bool>(SaveCanExecute));
                return savePersonCommand;
            }
  }
public bool SaveCanExecute()
  {
            return !string.IsNullOrEmpty(DB_Col.DbName) && !string.IsNullOrEmpty(DB_Col.NumTables);
  }
public void SaveExecuted()
  {
                System.Windows.MessageBox.Show(string.Format("Saved: {0} {1} ", DB_Col.DbName, DB_Col.NumTables));
   }