MVVM 같은 생소한 패턴도 어렵지만
@jamesnet214 소스를 Clone 하면서 느낀것지만
기존에 priism 을 다루면서 이제 잘안쓰시는것 같더군요
왠만한것 다 커스텀 하신것 가은데
이렇게 생짜로 class 라이브러리를 wpf 모듈을 만들때

이렇게 생성됍니다. 그리고 여기에
csproj 파일에
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>
이렇게 해주어야 합니다.
{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
이 구문은 wpf 템플릿을 사용하면 안해도 되지만 해줘야 파일추가시 wpf 템플릿을 선택 가능하라구요
그리고

그리고 이렇게 Properties 폴더를 만들고 어플리케이션에서 쓰는
성격이나 리소스 파일을 넣어놓아야 하고

화면 하나를 만들기위해 이렇게 많은 파일이 필요하네요
처음에는 저 구조가 이해가 안가서 헤매고 windows 는 도대체 어디있는것야
했는데 window 개념보다 VIEW 개념으로 접근하시는것 같더군요
public class HomeContent : WPFView
{
public HomeContent()
{
DefaultStyleKey = typeof(HomeContent);
}
따라한다고 이렇게 했지만 솔직히 “DefaultStyleKey” 이건 무엇인지 모르겠습니다 ^^
그리고 Theme 폴더에
ResourceDictionary 로 구성해놓으셨는데 도대체
어디서 매인 content 를 놓는지 몰라서 헤맸는데
<Style TargetType="views:HomeContent">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="views:HomeContent">
<Grid Style="{StaticResource MainGridStyle}" >
<Grid.RowDefinitions>
<RowDefinition Height="2"/>
<RowDefinition Height="500"/>
<RowDefinition Height="1"/>
<RowDefinition/>
</Grid.RowDefinitions>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
대략 이런식으로 핵심 Node이고 저기서 디자인을 하더군요
기존에 여기서 벽에 부딧친것이 예전에 쓰던
interative 속성은(Loaded 이벤트 같은것) 어떻게 써야 하는지
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:james="clr-namespace:Jamesnet.Windows;assembly=Jamesnet.Windows"
xmlns:feature="clr-namespace:NP.Support.UI.Features;assembly=NP.Support"
xmlns:tray="http://schemas.lepo.co/wpfui/2022/xaml/tray"
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
xmlns:views="clr-namespace:NP.Home.Views
XML 의 Processing 지시자라고 하나요 xml 이라 잘 와닿지 않고
url 로 alias 되있어서 헷갈립니다. 저걸 정의할려면 위에 properties
에 assemblyinfo.cs 에서 하더군요;;;
무엇보다 generic.xaml

이건 파일은 생성했지만 왜 자동 적용되는지 모르겠습니다 ^^
대략 따라한다고 하고있는데 james 아키텍쳐에
wpfui 를 입히다고 하고있는데
Navigation control에서 벽에 부딧쳤습니다.
여기서 핵심은 처음에는 기존에 알고있던 prism 이나 일반적인 방식으로 개발할려고 했는데
저런 구조가 요즘 최신 트렌드인 winui 같은것으로 이전이 쉽다고 해서 안좋은 머리로 헤매고
있습니다.
그리고 있는 control들을 그냥 갔다 쓰다가 각 control 상속 받은 부모 속성 확인해서
하나하나 deep 하게 봐야하는점이 힘드네요
그리고 솔직히 커스텀 디자인을 할려면 특정 컨트롤 구조가 어떻게 되어있는지
다 분해해서 봐야 하는데 와 ^^;; 애니메이션은 어떻게 해야할지
근데 저 generic.xaml 은 정의된 파일 이름이라 생성하면 자동 적용 되는것인가요. ???
저구조를 따라하긴 했지만 뭔가 도식화된 그림으로 표현을 하면 더 이해가 쉬울것 같긴하네요
어려운 이유를 정리하면
- 개발방법이 정말 다양하다
- 얇게 넓게 알아야 한다.
- 왜?? 뭔가 자동적용되는것이 많아서 이유를 아는것이 아니라 그렇구나 하면
양자역학적으로 생각해야 할것이 많습니다.
