티스토리 뷰

반응형

[wpf/c#] mvvm 을 활용한 런처(전원 관리 및 파일 관리) 만들기(1/3)

 

#1.프로젝트 생성 및 라이브러리 설치

-Launcher wpf 프로젝트 생성(.Net Framework 4.6.2)

-MvvmLight 라이브러리 설치(5.4.1.1)

 

#2.기본 Mvvm 기본 형식 완성

 #MainViewModel

 public class MainViewModel : ViewModelBase
    {
        public MainViewModel()
        {
            Title = "런처 테스트";
            OnClickCommand = new RelayCommand(OnClickCommandAction, null);
        }

        private string _title;

        public string Title
        {
            get { return _title; }
            set
            {
                _title = value;
                RaisePropertyChanged("Title");
            }
        }

        public RelayCommand OnClickCommand { get; set; }

        private void OnClickCommandAction()
        {
        }
    }

 

#VIew - MainWindow.xaml

<Window x:Class="Launcher_SE.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:local="clr-namespace:Launcher_SE"
        mc:Ignorable="d"
        DataContext="{Binding Source={StaticResource Locator}, Path=MainViewModel}"
        Title="MainWindow" Height="450" Width="800">
    <StackPanel>
        <TextBlock Width="500" Height="50" Text="{Binding Title}"/>
        <Button Width="500" Height="50" Content="Click" Command="{Binding OnClickCommand}" />
    </StackPanel>
</Window>

 

#Locator - ViewModelLocator

 public class ViewModelLocator
    {
        public ViewModelLocator()
        {
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
            SimpleIoc.Default.Register<MainViewModel>();
        }

        public MainViewModel MainViewModel
        {
            get
            {
                return ServiceLocator.Current.GetInstance<MainViewModel>();
            }
        }
        
        public static void Cleanup()
        {
        }
    }

 

#화면

반응형
댓글
반응형