2014-04-19 204 views
0

嗨我正在为我使用C#WPF和MVVM模式的网络应用程序工作。这将是一个快速配置应用程序,以便用户可以从应用程序配置设备。混淆的问题是我想要获取有关vlans的信息,并且可能有多个用户可以创建的vlans。所以我需要同时从用户那里获取多个信息,最后我会通过telnet命令配置所有的值。从用户那里获取多个输入并将其存储到最终以便它可以正确配置的可能和简单的方法是什么? 建议将非常可观。从列表中选择项目并将它们添加到列表中?

我对VLAN视图模型代码是:

public class VLANSViewModel : WizardPageViewModelBase 
    { 
    #region Fields 


    #endregion // end region fields 

    #region Constructor 

    public VLANSViewModel(ConfigurationLibrary configuration) 
     : base(configuration) 
    { 
     VlanIP1 = "192"; 
     VlanIP2 = "168"; 
     VlanIP3 = "1"; 
     VlanIP4 = "1"; 
    } 
    #endregion 

    #region Properties 


    public string VlanName 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanName; 
     } 
     set 
     { 
     if (String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanName, value)) 
     { 
      return; 
     } 
     this.ConfigurationLibrary.ConfigLibraryVlanName = value; 
     this.OnPropertyChanged("VlanName"); 
     } 
    } 

    public string VlanID 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanName; 
     } 
     set 
     { 
     if (String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanName, value)) 
     { 
      return; 
     } 
     this.ConfigurationLibrary.ConfigLibraryVlanName = value; 
     this.OnPropertyChanged("VlanID"); 
     } 
    } 

    public string VlanIP1 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanIp1; 
     } 
     set 
     { 
     if (!String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanIp1, value)) 
     { 
      this.ConfigurationLibrary.ConfigLibraryVlanIp1 = value; 
      this.OnPropertyChanged("VlanIP1"); 
     } 
     } 
    } 
    public string VlanIP2 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanIp2; 
     } 
     set 
     { 
     if (!String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanIp2, value)) 
     { 
      this.ConfigurationLibrary.ConfigLibraryVlanIp2 = value; 
      this.OnPropertyChanged("VlanIP2"); 
     } 
     } 
    } 
    public string VlanIP3 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanIp3; 
     } 
     set 
     { 
     if (!String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanIp3, value)) 
     { 
      this.ConfigurationLibrary.ConfigLibraryVlanIp3 = value; 
      this.OnPropertyChanged("VlanIP3"); 
     } 
     } 
    } 
    public string VlanIP4 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanIp4; 
     } 
     set 
     { 
     if (!String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanIp4, value)) 
     { 
      this.ConfigurationLibrary.ConfigLibraryVlanIp4 = value; 
      this.OnPropertyChanged("VlanIP4"); 
     } 
     } 
    } 

    public string VlanDefaultRoute1 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute1; 
     } 
     set 
     { 
     if (!String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute1, value)) 
     { 
      this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute1 = value; 
      this.OnPropertyChanged("VlanDefaultRoute1"); 
     } 
     } 
    } 

    public string VlanDefaultRoute2 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute2; 
     } 
     set 
     { 
     if (!String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute2, value)) 
     { 
      this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute2 = value; 
      this.OnPropertyChanged("VlanDefaultRoute2"); 
     } 
     } 
    } 
    public string VlanDefaultRoute3 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute3; 
     } 
     set 
     { 
     if (!String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute3, value)) 
     { 
      this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute3= value; 
      this.OnPropertyChanged("VlanDefaultRoute3"); 
     } 
     } 
    } 

    public string VlanDefaultRoute4 
    { 
     get 
     { 
     return this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute4; 
     } 
     set 
     { 
     if (!String.Equals(this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute4, value)) 
     { 
      this.ConfigurationLibrary.ConfigLibraryVlanDefaultRoute4 = value; 
      this.OnPropertyChanged("VlanDefaultRoute4"); 
     } 
     } 
    } 

    #endregion // end region fields 

    public override string DisplayName 
    { 
     get 
     { 
     return Strings.PageDisplayName_VLAN; 
     } 
    } 

    #region Methods 
    internal override bool IsValid() 
    { 
     return true; 
    } 
    #endregion 
    } 

而且我对VLAN的看法是:

 <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="150"/> 
     <ColumnDefinition Width="200"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <Label 
     Grid.Row="0" 
     Grid.Column="0" 
     VerticalAlignment="Center" 
     Content="VLAN NAME" 
     Foreground="Black" 
     Opacity="0.8" 
     /> 

    <ComboBox 
     Grid.Row="0" 
     Grid.Column="1" 
     Margin="0,5,0,0" 
     Height="25" 
     Foreground="Black" 
     Opacity="0.8" 
     Width="Auto" 
     Text="{Binding VlanName, UpdateSourceTrigger=PropertyChanged}" 
     /> 
    <Label 
     Grid.Row="1" 
     Grid.Column="0" 
     VerticalAlignment="Center" 
     Content="VLAN ID" 
     Foreground="Black" 
     Opacity="0.8" 
     /> 
    <TextBox 
     Grid.Row="1" 
     Grid.Column="1" 
     Margin="0,5,0,0" 
     Height="25" 
     Foreground="Black" 
     Opacity="0.8" 
     Width="Auto" 
     Text="{Binding VlanID, UpdateSourceTrigger=PropertyChanged}" 
     /> 

    <Label 
     Grid.Row="2" 
     Grid.Column="0" 
     VerticalAlignment="Center" 
     Content="IP FOR VLAN" 
     Foreground="Black" 
     Opacity="0.8" 
     /> 

    <Grid 
     Grid.Column="1" 
     Grid.Row="2"> 
     <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="40"/> 
     <ColumnDefinition Width="40"/> 
     <ColumnDefinition Width="40"/> 
     <ColumnDefinition Width="40"/> 
     </Grid.ColumnDefinitions> 
    <TextBox 
     Grid.Row="2" 
     Grid.Column="0" 
     Margin="5" 
     VerticalAlignment="Center" 
     MaxLength="3" 
     Width="30" 
     Foreground="Black" 
     Opacity="0.8" 
     Text="{Binding VlanIP1, UpdateSourceTrigger=PropertyChanged}"  
     /> 
     <TextBox 
     Grid.Row="2" 
     Grid.Column="1" 
     Margin="5" 
     VerticalAlignment="Center" 
     MaxLength="3" 
     Width="30" 
     Foreground="Black" 
     Opacity="0.8" 
     Text="{Binding VlanIP2, UpdateSourceTrigger=PropertyChanged}" 

     /> 
     <TextBox 
     Grid.Row="2" 
     Grid.Column="2" 
     Margin="5" 
     VerticalAlignment="Center" 
     MaxLength="3" 
     Width="30" 
     Foreground="Black" 
     Opacity="0.8" 
     Text="{Binding VlanIP3, UpdateSourceTrigger=PropertyChanged}" 

     /> 
     <TextBox 
     Grid.Row="2" 
     Grid.Column="3" 
     Margin="5" 
     VerticalAlignment="Center" 
     MaxLength="3" 
     Width="30" 
     Foreground="Black" 
     Opacity="0.8" 
     Text="{Binding VlanIP4, UpdateSourceTrigger=PropertyChanged}" 

     /> 
    </Grid> 
    <Label 
     Grid.Row="3" 
     Grid.Column="0" 
     VerticalAlignment="Center" 
     Content="DEFAULT ROUTE" 
     Foreground="Black" 
     Opacity="0.8" 
     /> 
    <Grid 
     Grid.Row="3" 
     Grid.Column="1"> 
     <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="40"/> 
     <ColumnDefinition Width="40"/> 
     <ColumnDefinition Width="40"/> 
     <ColumnDefinition Width="40"/> 
     </Grid.ColumnDefinitions> 

     <TextBox 
     Grid.Row="2" 
     Grid.Column="0" 
     Margin="5" 
     VerticalAlignment="Center" 
     MaxLength="3" 
     Width="30" 
     Foreground="Black" 
     Opacity="0.8" 
     Text="{Binding VlanDefaultRoute1, UpdateSourceTrigger=PropertyChanged}"  
     /> 
     <TextBox 
     Grid.Row="2" 
     Grid.Column="1" 
     Margin="5" 
     VerticalAlignment="Center" 
     MaxLength="3" 
     Width="30" 
     Foreground="Black" 
     Opacity="0.8" 
     Text="{Binding VlanDefaultRoute2, UpdateSourceTrigger=PropertyChanged}"  
     /> 
     <TextBox 
     Grid.Row="2" 
     Grid.Column="2" 
     Margin="5" 
     VerticalAlignment="Center" 
     MaxLength="3" 
     Width="30" 
     Foreground="Black" 
     Opacity="0.8" 
     Text="{Binding VlanDefaultRoute3, UpdateSourceTrigger=PropertyChanged}"  
     /> 
     <TextBox 
     Grid.Row="2" 
     Grid.Column="3" 
     Margin="5" 
     VerticalAlignment="Center" 
     MaxLength="3" 
     Width="30" 
     Foreground="Black" 
     Opacity="0.8" 
     Text="{Binding VlanDefaultRoute4, UpdateSourceTrigger=PropertyChanged}"  
     /> 
    </Grid> 
    </Grid> 


</UserControl> 

我想在同一时间保存的VLAN值的多个值。现在有什么建议?

+0

你想如何获得用户输入?通过GUI?通过命令行?某种提示? – ZivS

+0

如果你描述输入格式,它也会更容易帮助你 – ZivS

回答

0

我想你正在寻找一个很好的介绍,从头开始学习一个可以正确处理模型的MVVM应用程序。在这种情况下,我建议使用“入门MVVM”guid,例如this one in Catel

相关问题