[英]What way is better for init class property with default value when the create the instance of class
[英]how to create property for another class better way
我在一個班上課。 在視圖模型中,我有系統狀態屬性,在另一個類中,我正在手動編寫電腦名稱……對於 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);
}
}
}
在主窗口中,我像下面這樣在計算機上書寫,但這需要太多的精力和時間。 我怎樣才能讓它更容易?
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>
類
你可以從這里檢查
您可以像這樣使用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 台計算機,您可以使用For Loop
將每個ComputerInfos
類轉換為ComputerInfo
集合。 然后,您在主窗口中獲取或設置每台計算機的信息變得更加容易。
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();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.