Question

Hi I am working on a networking application for which I am using C# WPF and MVVM pattern. This would be a fast configuration application so that user can configure a device from application. The problem of confusion is that I want want to take information about vlans and there could be multiple vlans a user can create. So I need to take multiple information from user at the same time and in the end I will configure all the values via telnet command. What would be the possible and simple way of taking multiple inputs from user and store it till end so that it could be configured correctly? Suggestions would be greatly appreciable.

My code for VLANS ViewModel is:

  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
  }

And my view for VLANS is :

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

I want to save multiple values for VLANS values at one time. Now any suggestions?

Was it helpful?

Solution

I think you are looking for a good introduction to get from scratch to an MVVM application that can handle models correctly. In that case I recommend to use a "getting started with MVVM" guid such as this one in Catel.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top