簡體   English   中英

如何更好地為另一個班級創建財產

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM