2014-04-19 200 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

相關問題