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

时间:2015-09-11 12:10:11

标签: c# wpf xaml user-interface mvvm

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

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

********************************************
  GUI : some textbox and buttons
********************************************

If the input given was 2 :

********************************************
  GUI : some textbox and buttons
********************************************
********************************************
  GUI : some textbox and buttons
********************************************

如何使用MVVM方法执行此操作?我应该使用c#进行编码(因为输入将动态提供)

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

<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>

我的按钮点击功能(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));
   }

如何使用c#follwing MVVM动态渲染此Grid中的数据如果我的方法是正确的?

0 个答案:

没有答案