4
4
5
5
namespace Portfolio . ViewModel
6
6
{
7
- public record PortfolioViewModel ( ObservableCollection < PortfolioModel > PortfolioHistory , ObservableCollection < Brush > Palette , ObservableCollection < string > Years , string SelectedYear ) : INotifyPropertyChanged
7
+ public class PortfolioViewModel : INotifyPropertyChanged
8
8
{
9
+ public ObservableCollection < PortfolioModel > PortfolioHistory { get ; set ; }
10
+ public ObservableCollection < Brush > Palette { get ; set ; }
11
+ public ObservableCollection < string > Years { get ; set ; }
12
+ public string SelectedYear { get ; set ; }
13
+
9
14
private ObservableCollection < PortfolioModel > ? _portfolioData ;
10
15
public ObservableCollection < PortfolioModel > PortfolioData
11
16
{
@@ -19,16 +24,24 @@ public ObservableCollection<PortfolioModel> PortfolioData
19
24
}
20
25
}
21
26
}
27
+
22
28
public event PropertyChangedEventHandler ? PropertyChanged ;
23
- public PortfolioViewModel ( ) : this ( [ ] , [
24
- new SolidColorBrush ( Color . FromArgb ( "#56EBF5" ) ) ,
25
- new SolidColorBrush ( Color . FromArgb ( "#FC922C" ) ) ,
26
- new SolidColorBrush ( Color . FromArgb ( "#FC95B2" ) ) ,
27
- new SolidColorBrush ( Color . FromArgb ( "#FEE7A0" ) ) ,
28
- new SolidColorBrush ( Color . FromArgb ( "#DDB1E1" ) ) ,
29
- new SolidColorBrush ( Color . FromArgb ( "#EBD9EB" ) ) ,
30
- ] , [ "2005" , "2010" , "2015" , "2020" , "2025" ] , "2005" )
29
+
30
+ public PortfolioViewModel ( )
31
+ {
32
+ PortfolioHistory = new ObservableCollection < PortfolioModel > ( ) ;
33
+ Palette = new ObservableCollection < Brush >
31
34
{
35
+ new SolidColorBrush ( Color . FromArgb ( "#56EBF5" ) ) ,
36
+ new SolidColorBrush ( Color . FromArgb ( "#FC922C" ) ) ,
37
+ new SolidColorBrush ( Color . FromArgb ( "#FC95B2" ) ) ,
38
+ new SolidColorBrush ( Color . FromArgb ( "#FEE7A0" ) ) ,
39
+ new SolidColorBrush ( Color . FromArgb ( "#DDB1E1" ) ) ,
40
+ new SolidColorBrush ( Color . FromArgb ( "#EBD9EB" ) )
41
+ } ;
42
+ Years = new ObservableCollection < string > { "2005" , "2010" , "2015" , "2020" , "2025" } ;
43
+ SelectedYear = "2005" ;
44
+
32
45
UpdatePortfolioData ( SelectedYear ) ;
33
46
GeneratePortfolioData ( ) ;
34
47
}
@@ -37,59 +50,60 @@ protected void OnPropertyChanged(string propertyName)
37
50
{
38
51
PropertyChanged ? . Invoke ( this , new PropertyChangedEventArgs ( propertyName ) ) ;
39
52
}
53
+
40
54
public void UpdatePortfolioData ( string year )
41
55
{
42
56
PortfolioData = year switch
43
57
{
44
- "2005" =>
45
- [
46
- new ( "Stocks" , 60 ) ,
47
- new ( "Bonds" , 20 ) ,
48
- new ( "Real Estate" , 10 ) ,
49
- new ( "Gold" , 5 ) ,
50
- new ( "Cash" , 5 )
51
- ] ,
52
- "2010" =>
53
- [
54
- new ( "Stocks" , 55 ) ,
55
- new ( "Bonds" , 25 ) ,
56
- new ( "Real Estate" , 12 ) ,
57
- new ( "Gold" , 5 ) ,
58
- new ( "Cash" , 3 )
59
- ] ,
60
- "2015" =>
61
- [
62
- new ( "Stocks" , 50 ) ,
63
- new ( "Bonds" , 30 ) ,
64
- new ( "Real Estate" , 15 ) ,
65
- new ( "Gold" , 4 ) ,
66
- new ( "Cash" , 1 )
67
- ] ,
68
- "2020" =>
69
- [
70
- new ( "Stocks" , 45 ) ,
71
- new ( "Bonds" , 35 ) ,
72
- new ( "Real Estate" , 17 ) ,
73
- new ( "Gold" , 2 ) ,
74
- new ( "Cash" , 1 )
75
- ] ,
76
- "2025" =>
77
- [
78
- new ( "Stocks" , 40 ) ,
79
- new ( "Bonds" , 40 ) ,
80
- new ( "Real Estate" , 18 ) ,
81
- new ( "Gold" , 1 ) ,
82
- new ( "Cash" , 1 )
83
- ] ,
58
+ "2005" => new ObservableCollection < PortfolioModel >
59
+ {
60
+ new PortfolioModel ( "Stocks" , 60 ) ,
61
+ new PortfolioModel ( "Bonds" , 20 ) ,
62
+ new PortfolioModel ( "Real Estate" , 10 ) ,
63
+ new PortfolioModel ( "Gold" , 5 ) ,
64
+ new PortfolioModel ( "Cash" , 5 )
65
+ } ,
66
+ "2010" => new ObservableCollection < PortfolioModel >
67
+ {
68
+ new PortfolioModel ( "Stocks" , 55 ) ,
69
+ new PortfolioModel ( "Bonds" , 25 ) ,
70
+ new PortfolioModel ( "Real Estate" , 12 ) ,
71
+ new PortfolioModel ( "Gold" , 5 ) ,
72
+ new PortfolioModel ( "Cash" , 3 )
73
+ } ,
74
+ "2015" => new ObservableCollection < PortfolioModel >
75
+ {
76
+ new PortfolioModel ( "Stocks" , 50 ) ,
77
+ new PortfolioModel ( "Bonds" , 30 ) ,
78
+ new PortfolioModel ( "Real Estate" , 15 ) ,
79
+ new PortfolioModel ( "Gold" , 4 ) ,
80
+ new PortfolioModel ( "Cash" , 1 )
81
+ } ,
82
+ "2020" => new ObservableCollection < PortfolioModel >
83
+ {
84
+ new PortfolioModel ( "Stocks" , 45 ) ,
85
+ new PortfolioModel ( "Bonds" , 35 ) ,
86
+ new PortfolioModel ( "Real Estate" , 17 ) ,
87
+ new PortfolioModel ( "Gold" , 2 ) ,
88
+ new PortfolioModel ( "Cash" , 1 )
89
+ } ,
90
+ "2025" => new ObservableCollection < PortfolioModel >
91
+ {
92
+ new PortfolioModel ( "Stocks" , 40 ) ,
93
+ new PortfolioModel ( "Bonds" , 40 ) ,
94
+ new PortfolioModel ( "Real Estate" , 18 ) ,
95
+ new PortfolioModel ( "Gold" , 1 ) ,
96
+ new PortfolioModel ( "Cash" , 1 )
97
+ } ,
84
98
_ => PortfolioData
85
99
} ;
86
100
}
101
+
87
102
private void GeneratePortfolioData ( )
88
103
{
89
104
double initialInvestment = 10000 ;
90
105
double currentValue = initialInvestment ;
91
- Random random = new ( ) ;
92
- Random rand = random ;
106
+ Random rand = new ( ) ;
93
107
94
108
for ( int year = 2005 ; year <= 2025 ; year ++ )
95
109
{
@@ -105,4 +119,5 @@ private void GeneratePortfolioData()
105
119
}
106
120
}
107
121
}
122
+
108
123
}
0 commit comments