如何为另一个 class 更好的方法创建 属性
how to create property for another class better way
我有 class 个 class。在视图模型中,我有系统状态 属性,在另一个 class 中,我正在手写电脑名称...对于 150 台电脑,我为状态电脑创建 属性。清楚说明这一点的最佳方法是什么?
public class Computers
{
public Computers()
{
computer1 = new SeriesViewModel();
computer2 = new SeriesViewModel();
computer3 = new SeriesViewModel();
//over 150 computer
}
SeriesViewModel computer1 { get; set; }
SeriesViewModel computer2 { get; set; }
SeriesViewModel computer3 { get; set; }
//over 150 computer
}
public class ComputerInfos: INotifyPropertyChanged
{
public ComputerInfos()
{
}
private string compname;
private string serialno;
public string ComputerName
{
get { return compname; }
set
{
compname= value;
OnPropertyChange(this,ComputerName );
}
}
public string SerialNumber
{
get { return serialno; }
set
{
serialno= value;
OnPropertyChange(this,SerialNumber);
}
}
}
在主window中,我像下面这样在计算机上写,但是太费力和时间了。我怎样才能让它更容易?
public partial class MainWindow : Window
{
private Computers computer;
public MainWindow()
{
InitializeComponent();
computer = new Computers ();
DataContext = computer;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
computer.computer1.ComputerName = "Computer 1";
computer.computer1.SerialNumber = "1N-C1";
computer.computer2.ComputerName = "Computer 2";
computer.computer2.SerialNumber = "1N-C2";
computer.computer3.ComputerName = "Computer 3";
computer.computer3.SerialNumber = "1N-C3";
// for each computers writing like this is bad
}
}
在这种情况下,我们使用 ObservableCollection<T>
class
您可以从here
查看
你可以这样使用ObservableCollection
;
public class Computers
{
public Computers()
{
ComputerInfo = new ObservableCollection<ComputerInfos>();
for(int i = 0; i<150; i++)
{
ComputerInfo.Add(new ComputerInfos());
}
}
public ObservableCollection<ComputerInfos> ComputerInfo { get; }
}
对于 150 台计算机,您可以对每个 ComputerInfos
class 到 ComputerInfo
集合使用 For Loop
。
然后,您在 Main 中获取或设置每台计算机的信息 Windows 变得更容易。
public partial class MainWindow : Window
{
private Computers computer;
public MainWindow()
{
InitializeComponent();
computer = new Computers ();
DataContext = computer;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 1; i <=150; i++)
{
computer.ComputerInfo[i-1].ComputerName = "Computer " + i.Tostring();
computer.ComputerInfo[i-1].SerialNumber = "1N-C" + i.ToString();
}
}
}
我有 class 个 class。在视图模型中,我有系统状态 属性,在另一个 class 中,我正在手写电脑名称...对于 150 台电脑,我为状态电脑创建 属性。清楚说明这一点的最佳方法是什么?
public class Computers
{
public Computers()
{
computer1 = new SeriesViewModel();
computer2 = new SeriesViewModel();
computer3 = new SeriesViewModel();
//over 150 computer
}
SeriesViewModel computer1 { get; set; }
SeriesViewModel computer2 { get; set; }
SeriesViewModel computer3 { get; set; }
//over 150 computer
}
public class ComputerInfos: INotifyPropertyChanged
{
public ComputerInfos()
{
}
private string compname;
private string serialno;
public string ComputerName
{
get { return compname; }
set
{
compname= value;
OnPropertyChange(this,ComputerName );
}
}
public string SerialNumber
{
get { return serialno; }
set
{
serialno= value;
OnPropertyChange(this,SerialNumber);
}
}
}
在主window中,我像下面这样在计算机上写,但是太费力和时间了。我怎样才能让它更容易?
public partial class MainWindow : Window
{
private Computers computer;
public MainWindow()
{
InitializeComponent();
computer = new Computers ();
DataContext = computer;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
computer.computer1.ComputerName = "Computer 1";
computer.computer1.SerialNumber = "1N-C1";
computer.computer2.ComputerName = "Computer 2";
computer.computer2.SerialNumber = "1N-C2";
computer.computer3.ComputerName = "Computer 3";
computer.computer3.SerialNumber = "1N-C3";
// for each computers writing like this is bad
}
}
在这种情况下,我们使用 ObservableCollection<T>
class
您可以从here
查看你可以这样使用ObservableCollection
;
public class Computers
{
public Computers()
{
ComputerInfo = new ObservableCollection<ComputerInfos>();
for(int i = 0; i<150; i++)
{
ComputerInfo.Add(new ComputerInfos());
}
}
public ObservableCollection<ComputerInfos> ComputerInfo { get; }
}
对于 150 台计算机,您可以对每个 ComputerInfos
class 到 ComputerInfo
集合使用 For Loop
。
然后,您在 Main 中获取或设置每台计算机的信息 Windows 变得更容易。
public partial class MainWindow : Window
{
private Computers computer;
public MainWindow()
{
InitializeComponent();
computer = new Computers ();
DataContext = computer;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 1; i <=150; i++)
{
computer.ComputerInfo[i-1].ComputerName = "Computer " + i.Tostring();
computer.ComputerInfo[i-1].SerialNumber = "1N-C" + i.ToString();
}
}
}