반응형
이번엔 Partial Class이다.
사실 현재까지는 많이 사용하지 않는 방식..
하지만 코드가 길어지고 하다보니 써봐야하는생각이 많이 든다.
ViewModel에 Binding 되는 Property들, 호출하는 Command, 또한 기본 생성장/소멸자/Dispose등
많아질수록 위치가 헷갈린다.. 대부분 F12키를 이용해서 이동하지만.... 생성자 한번 찾아가려면..고생이다..
다음 플젝부터는 좀 구분해서 해보는것도 좋은 방법일듯싶다.
그리하여 코드 ㄱㄱ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<Window x:Class="TestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:dock="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:dockctrl="clr-namespace:Xceed.Wpf.AvalonDock.Controls;assembly=Xceed.Wpf.AvalonDock"
xmlns:local="clr-namespace:TestProject"
xmlns:LocalViewModel="clr-namespace:TestProject.ViewModels"
xmlns:LocalModel="clr-namespace:TestProject.Models"
mc:Ignorable="d"
Title="MainWindow" Height="561.5" Width="785">
<Window.DataContext>
<LocalViewModel:MainViewModel/>
</Window.DataContext>
<Grid Margin="10">
<Grid>
<TextBlock x:Name="tb" Text="{Binding Binding_TEXT}"/>
</Grid>
</Grid>
</Window>
|
cs |
UI는 어렵지 않게 꾸미겠다.. 그냥 바인딩되는 TextBlock 한개....
코드비하인드도 없고..
ViewModel은
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Xml.Linq;
using System.Xml.Serialization;
using TestProject.Models;
namespace TestProject.ViewModels
{
class MainViewModel : INotifyPropertyChanged
{
public MainViewModel()
{
Car C = new Car("TESLA S", CAR_TYPE.ELECTONIC, 40000);
C.CARBRAND = "TESLA";
Binding_TEXT = C.ToString();
}
private string _Binding_TEXT;
public string Binding_TEXT
{
get
{
return _Binding_TEXT;
}
set
{
_Binding_TEXT = value;
OnPropertyChanged("Binding_TEXT");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
|
cs |
ViewModel 또한 단순단순.
Car라는 클래스 하나 선언해주고 바인딩되는 Text에 Car정보 넣어주고 끝이다.
Car Class가 Partial로 작성되었다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestProject.Models
{
public enum CAR_TYPE
{
GASOLINE = 0,
DIESEL = 1,
ELECTONIC = 2
}
public partial class Car
{
public Car()
{
}
public Car(string _name, CAR_TYPE _TYPE, int _price)
{
CARNAME = _name;
CARTYPE = _TYPE;
CARPRICE = _price;
}
private string _car_name;
public string CARNAME
{
get { return _car_name; }
set { _car_name = value; }
}
private CAR_TYPE _car_type;
public CAR_TYPE CARTYPE
{
get { return _car_type; }
set { _car_type = value; }
}
private int _car_price;
public int CARPRICE
{
get { return _car_price; }
set { _car_price = value; }
}
public override string ToString()
{
return CARNAME + "-" + CARTYPE + "-" + CARBRAND + "-" + CARPRICE;
}
}
public partial class Car
{
private string _car_brand;
public string CARBRAND
{
get { return _car_brand; }
set { _car_brand = value; }
}
}
}
|
cs |
Car Class 너무 우려먹나...
아무튼... Car Brand라는 새로운 Property를 추가한 모습이다..
생성하는 class에 partial 키워드를 넣고 기존과 동일하게 추가해주면 된다.
1개의 Class를 나누어 작성하는 것이므로 동일한 이름 등을 추가하면 당연히 컴파일 에러가 난다.
이상!!
언제부턴가..파일 업로드가 안된다.....
하아 스트레스받네.......
구글 드라이브로 대신합니다.
https://drive.google.com/file/d/1eycCMV3na-dsLLbDcMOoTm2HZbDI3EIX/view?usp=sharing
반응형