제임스님 책으로 WPF를 다시 공부하면서 느낀것지만
기존에 제가 알던 WPF 랑 차이가 많네요
원래 기존에 wpf 를 할때 는
ViewModel에서는
private string pagetext ;
public string pagetext { get { return _pagetext; } set { SetProperty(ref _pagetext, value); } }
이렇게 선언하고
Text="{Binding pagetext }"
당연히 이렇게 했다면
이제는 이렇게 선언하고
[ObservableProperty]
private string _MaxButtonICon;
Icon="{Binding MaxButtonICon}"
이렇게 바인딩 할때 프로퍼티에 _ 를 붙이면 자동으로 _ 없애고 이름으로 바인딩을 할수있네요
처음에는 도대체 이게 왜 자동으로 되는지 이해가 안갔습니다.
Command 도
[RelayCommand]
private void Btn(string parameter)
이렇게 메소드에 Attribute 를 주면 relay command 로 쓸수 있네요
<units:CloseButton Grid.Column="3" Command="{Binding BtnCommand}" CommandParameter="Close" />
이런식으로 Command 를 붙여야 하네요
그리고 ViewModel에서 윈도우 핸들러 얻을때는
public void OnLoaded(IViewable view)
{
_view = view;
IViewable 의존성을 받고
Window window = Window.GetWindow(_view.View); 이런식으로 핸들을 얻어야
윈도우를 제어할수 있네요
그리고 vm 이 아닌 일반 이벤트 핸들러는
Border border = GetTemplateChild("PART_Bar") as Border;
이런식으로 control 핸들러를 찾아서
border.MouseMove += Border_MouseMove; Code에서 이벤트 핸들러를
걸어줬네요
그리고 ItemsPresenter,ControlTemplate 순수하게 외워야 할것들이 많네요
등등 개발자가 원리를 이해하기 보다는 그냥 원칙을 외워야 하는 점이 많은것 같습니다.
물론 james 님의 framework 를 써서 그런것도 있지만 그냥 단순
처음에 공개된 github 소스만 보면 된다고 한 저자신을 반성합니다.
정말 거의 만들어진 소스만 보고 따라할수 있는것이 아니네요
james님의 Code가 정말 많은 고민과 원칙을 지킬려고 했던점이 인상깊네요
이 소스를 제가 100% 이해하는것 불가능할것 같고 50% 라도 이해해서
뭔가 만들수 있다면 좋을것 같네요