【问题标题】:Select items from list and add them in a list?从列表中选择项目并将它们添加到列表中?
【发布时间】:2014-06-03 23:08:41
【问题描述】:

您好,我正在开发一个使用 C# WPF 和 MVVM 模式的网络应用程序。这将是一个快速配置应用程序,以便用户可以从应用程序配置设备。混淆的问题是我想获取有关 vlan 的信息,并且用户可以创建多个 vlan。所以我需要同时从用户那里获取多个信息,最后我将通过 telnet 命令配置所有值。从用户那里获取多个输入并将其存储到最后以便正确配置的可能且简单的方法是什么? 建议将非常可观。

我的 VLANS ViewModel 代码是:

  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>

我想一次保存多个 VLANS 值。现在有什么建议吗?

【问题讨论】:

  • 您希望如何获取用户输入?通过图形用户界面?通过命令行?某种提示?
  • 另外,如果您描述输入格式会更容易帮助您

标签: c# wpf networking mvvm telnet


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多