iconDreamine
← 지식 Q&A 목록
Event · Published

Enterprise 예제에서 MainWindow와 MainWindowViewModel은 어떻게 연결되며, ViewModel은 MainWindowEvent를 어떻게 참조하나요?

요청 판정 Supported 개정 1 / 1 조회 933초 동안 분석2026-07-20 23:32
직접 답변

Enterprise 예제에서는 `App.Customization.Sample.cs`가 DI 컨테이너에서 `MainWindowViewModel`을 resolve한 뒤, 새 `MainWindow`의 `DataContext`에 직접 대입하여 둘을 연결합니다. ViewModel은 `MainWindowEvent` 형식의 private 필드 `_event`를 선언하고 `[DreamineEvent]`를 붙여 참조합니다.

핵심 코드 근거

직접 근거

Enterprise MainWindow 시작 구성 코드 선언

컨테이너에서 MainWindowViewModel을 resolve하고 MainWindow.DataContext에 대입합니다.

static partial void ShowMainWindow()
        /// <para>Use this hook only when you want to create and show the main window manually. If App.xaml already defines StartupUri, leave this hook unused.</para>
        /// \endif
        /// </remarks>
        static partial void ShowMainWindow()
        {
            var vm = DMContainer.Resolve<MainWindowViewModel>();
            var view = new MainWindow
            {
                DataContext = vm
            };

            view.Loaded += (s, e) =>
            {
20_SOURCES/998. DEMO/000. Sample/010. Wpfs/Enterprise/SampleEnterprise/SampleEnterprise/App.Customization.Sample.cs:114-126
직접 근거

Enterprise MainWindowEvent 필드 코드 선언

ViewModel이 DreamineEvent 특성이 붙은 MainWindowEvent private 필드를 선언합니다.

[DreamineEvent] private MainWindowEvent _event;
        /// \if EN
        /// <para>Stores the event value.</para>
        /// \endif
        /// </summary>
        [DreamineEvent]
        private MainWindowEvent _event;

        /// <summary>
        /// \if KO
        /// <para>Title 값을 가져옵니다.</para>
        /// \endif
        /// \if EN
        /// <para>Gets the title value.</para>
20_SOURCES/998. DEMO/000. Sample/010. Wpfs/Enterprise/SampleEnterprise/SampleEnterprise.ViewModels/MainWindowViewModel.cs:39-51
직접 근거

Enterprise MainWindowEvent 형식 코드 선언

SampleEnterprise.Events 네임스페이스에 MainWindowEvent CLR 클래스가 선언됩니다.

namespace SampleEnterprise.Events; public class MainWindowEvent
using Dreamine.MVVM.Interfaces.Navigation;
using System.Windows;
using Dreamine.MVVM.Core;

namespace SampleEnterprise.Events
{
    /// <summary>
    /// \if KO
    /// <para>Main Window Event 기능과 관련 상태를 캡슐화합니다.</para>
    /// \endif
    /// \if EN
    /// <para>Encapsulates main window event functionality and related state.</para>
    /// \endif
    /// </summary>
    public class MainWindowEvent
    {
        /// <summary>
        /// \if KO
        /// <para>view Manager 값을 보관합니다.</para>
        /// \endif
        /// \if EN
        /// <para>Stores the view manager value.</para>
20_SOURCES/998. DEMO/000. Sample/010. Wpfs/Enterprise/SampleEnterprise/SampleEnterprise.Events/MainWindowEvent.cs:1-22
직접 근거

Enterprise MainWindowViewModel 선언 코드 선언

Enterprise 프로젝트의 MainWindowViewModel CLR 형식을 선언합니다.

public partial class MainWindowViewModel : ViewModelBase
    /// \endif
    /// \if EN
    /// <para>Encapsulates main window view model functionality and related state.</para>
    /// \endif
    /// </summary>
    public partial class MainWindowViewModel : ViewModelBase
    {
        /// <summary>
        /// \if KO
        /// <para>model 값을 보관합니다.</para>
        /// \endif
        /// \if EN
        /// <para>Stores the model value.</para>
20_SOURCES/998. DEMO/000. Sample/010. Wpfs/Enterprise/SampleEnterprise/SampleEnterprise.ViewModels/MainWindowViewModel.cs:18-30

추가 설명

MainWindow와 ViewModel 연결

구현 위치는 `SampleEnterprise/App.Customization.Sample.cs`의 `ShowMainWindow()`입니다. ```csharp var vm = DMContainer.Resolve<MainWindowViewModel>(); var view = new MainWindow { DataContext = vm }; ``` 즉, 연결 흐름은 `DMContainer.Resolve<MainWindowViewModel>() → MainWindow 생성 → DataContext = vm`입니다. XAML의 암시적 연결이 아니라 애플리케이션 시작 사용자 지정 코드에서 명시적으로 연결합니다.

확인 가능한 범위와 배치 지침

제공된 소스는 `[DreamineEvent]` 필드 선언까지는 증명하지만, 특성이 생성하는 멤버 이름이나 `_event` 값의 생성·주입 시점은 보여주지 않습니다. 저장소 추가 검색도 실행 환경 오류로 수행되지 않아 그 동작은 확정할 수 없습니다. 이 예제 구조를 따를 때 창–ViewModel 조립은 `App.Customization.Sample.cs`, 화면 상태와 호출 진입점은 `MainWindowViewModel`, 창 관련 동작은 별도 `SampleEnterprise.Events/MainWindowEvent.cs`에 둡니다. 확인된 코드상 `MainWindow` 코드비하인드가 ViewModel을 직접 생성할 필요는 없습니다.

확인되지 않은 내용

  • [DreamineEvent]가 필드에 값을 주입하는 구체적인 방식과 시점
  • [DreamineEvent] 소스 생성기가 별도 공개 멤버를 생성하는지 및 그 멤버 이름
기술 세부정보

정규화된 질문: Enterprise 예제에서 MainWindow와 MainWindowViewModel은 어떻게 연결되며, ViewModel은 MainWindowEvent를 어떻게 참조하나요?

Source · Enterprise MainWindow 시작 구성 source-1 · 직접 근거 · confidence 1.00
Source · Enterprise MainWindowViewModel 선언 source-2 · 직접 근거 · confidence 1.00
Source · Enterprise MainWindowEvent 필드 source-3 · 직접 근거 · confidence 1.00
Source · Enterprise MainWindowEvent 형식 source-4 · 직접 근거 · confidence 1.00
검색 원본
서버 저장소 소스 코드
생성 모델
codex-cli:default
생성 정책
dreamine-repository-search-v4
마지막 검증
2026-07-20 23:32:36
이 답변이 유용했나요?