2022년 1월 16일 일요일

(WPF동영상)WPF Style이란? Resource, StaticResource 이용 WPF 스타일 적용, WPF교육, C#교육, WPF학원, C#학원

 (WPF동영상)WPF Style이란?  Resource, StaticResource 이용 WPF 스타일 적용, WPF교육, C#교육, WPF학원, C#학원


http://ojc.asia/bbs/board.php?bo_table=WPF&wr_id=185 


(WPF동영상)WPF Style이란? Resource, StaticResource 이용 WPF 스타일 적용

(WPF동영상)WPF Style이란? Resource, StaticResource 이용 WPF 스타일 적용WPF Style이란?로컬 및 윈도우 스타일 적용WPF Style 이란?WPF XAML의 Resource절은 객체를 참조할 때도 사용되지만 Style 객체를 정의하는데

ojc.asia

https://www.youtube.com/watch?v=Qj26gdH651A&list=PLxU-iZCqT52Cmj47aKB1T-SxI33YL7rYS&index=23 



https://www.youtube.com/watch?v=innYXvo9WpA&list=PLxU-iZCqT52Cmj47aKB1T-SxI33YL7rYS&index=2 

https://www.youtube.com/watch?v=vlVKwC1ALmM&list=PLxU-iZCqT52Cmj47aKB1T-SxI33YL7rYS&index=3 

https://www.youtube.com/watch?v=MGOb9QXi6So&list=PLxU-iZCqT52Cmj47aKB1T-SxI33YL7rYS&index=6 

WPF Style이란?

로컬 및 윈도우 스타일 적용





WPF Style 이란?

  • WPF XAML의 Resource절은 객체를 참조할 때도 사용되지만 Style 객체를 정의하는데도 이용된다. Style은 Element에 적용되는 스타일 프로퍼티의 집합이다.


  • XAML 안에서 프로그래밍 언어처럼 반복문을 사용할 수 없으므로 동일한 프로퍼티를 가지는 여러 요소들을 생성할 때 사용하면 좋다.


  • 페이지에 버튼이 많다고 가정할 때 Margin, Font 등의 속성은 비슷하게 이용되므로 Resource절 내에 Style로 정의하면 공용으로 사용할 수 있다. 이 방법이 스타일을 사용하는 일반적인 방법이다.


  • 웹페이지에 적용되는 Style과 비교했을 때 WPF의 Style은 다른 프로퍼티의 변화 또는 이벤트로부터 유발되는 프로퍼티의 변화를 제어할 수 있기에 더욱 강력하다.


  • Object를 상속받은 Style은 System.Window에 정의되어 있는데 중요한 프로퍼티는 Setter로 SetterBase 객체(Setter와 EventSetter가 상속받음)의 컬렉션인 SetterBaseCollection 타입의 프로퍼티로 이를 통해 프로퍼티나 이벤트 핸들러를 설정할 수 있다. 


  • Setter는 Style의 컨텐트 프로퍼티(ContentProperty)로 Setter와 EventSetter는 Style 요소의 자식이며 일반적으로 Setter가 더 많이 사용된다. EventSetter는 라우팅된 특정 이벤트의 이벤트핸들러를 설정하는데 사용된다.


  • Setter는 특정 프로퍼티와 값을 연결시키며 프로퍼티 타입(DependencyProperty 타입)과 Value 타입(object 타입) 2개의 프로퍼티가 있다.


<Style…>

<Setter Property=”Control.FontSize” Value=”12”/>

<EventSetter …/>

<Setter Property=”Control.FontSize” Value=”{x:Null}”/>

</Style>


  • 대부분 여러 개의 요소와 컨트롤들이 공유 가능하도록 Style을 Resource절에 사용하고 있으며 Application 객체의 Resource절에서 사용한 Style은 전체 응용프로그램에서 공용으로 사용 가능하다.



  • 스타일을 공유하지 않은 아래 경우를 살펴보자.
<Window x:Class="WpfApp2.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:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow" Height="250" Width="450">
    <Grid Height="175">
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Button x:Name="button" Content="Button2" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="30">
            <Button.Style>
                <Style>
                    <Setter Property="Control.FontSize" Value="22" />
                    <Setter Property="Control.Foreground" Value="Red" />
                    <Setter Property="Control.HorizontalAlignment" Value="Center" />
                </Style>
            </Button.Style>
        </Button>
        <TextBlock x:Name="textBlock" HorizontalAlignment="Center" Grid.Row="1" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Center" Width="100" Height="30">
            <TextBlock.Style>
                <Style>
                    <Setter Property="Control.FontSize" Value="22" />
                    <Setter Property="Control.Foreground" Value="Red" />
                    <Setter Property="Control.HorizontalAlignment" Value="Center" />
                </Style>
            </TextBlock.Style>
        </TextBlock>
        <Button x:Name="button1" Content="Button2" Grid.Row="2" VerticalAlignment="Center" Width="100" Height="30" >
            <Button.Style>
                <Style>
                    <Setter Property="Control.FontSize" Value="22" />
                    <Setter Property="Control.Foreground" Value="Red" />
                    <Setter Property="Control.HorizontalAlignment" Value="Center" />
                </Style>
            </Button.Style>
        </Button>
    </Grid>
</Window>



  • 아래 예문은 Button과 TextBlock에서 Style을 공유했다.



<Window x:Class="WpfApp2.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:WpfApp2"

        mc:Ignorable="d"

        Title="MainWindow" Height="250" Width="450">

    <Window.Resources>

        <Style x:Key="normal">

            <Setter Property="Control.FontSize" Value="22" />

            <Setter Property="Control.Foreground" Value="Red" />

            <Setter Property="Control.HorizontalAlignment" Value="Center" />

        </Style>

    </Window.Resources>

    <Grid Height="175">

        <Grid.RowDefinitions>

            <RowDefinition/>

            <RowDefinition/>

            <RowDefinition/>

        </Grid.RowDefinitions>

        <Button Style="{StaticResource normal}" x:Name="button" Content="Button2" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="30">

        </Button>

        <TextBlock Style="{StaticResource normal}"  x:Name="textBlock" HorizontalAlignment="Center" Grid.Row="1" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Center" Width="100" Height="30">

         </TextBlock>

        <Button Style="{StaticResource normal}"  x:Name="button1" Content="Button2" Grid.Row="2" VerticalAlignment="Center" Width="100" Height="30" >

        </Button>

    </Grid>

</Window>





#WPF동영상, #WPFStyle, #Resource, #StaticResource, #WPF스타일, #WPF교육, #WPF강좌, WPF동영상, WPFStyle, Resource, StaticResource, WPF스타일, WPF교육, WPF강좌,  

2022년 1월 15일 토요일

(동영상)닷넷이란? CLI, CLS, CLR, CTS, 어셈블리 VS 2022, C# HelloWorld, Main함수, C#닷넷교육, 닷넷학원, 시샵학원

 (동영상)닷넷이란?  CLI, CLS, CLR, CTS, 어셈블리  VS 2022, C# HelloWorld, Main함수, C#닷넷교육, 닷넷학원, 시샵학원





이미지 썸네일 삭제
닷넷이란? CLI, CLS, CLR, CTS, 어셈블리 VS 2022, C# HelloWorld, Main함수

닷넷이란? CLI, CLS, CLR, CTS, 어셈블리 VS 2022, C# HelloWorld, Main함수C#닷넷이란?CLI, CLS, CLR, 어셈블리VS 2022, C# HelloWorld닷넷이란?(CLI, CLR, CTS, CLS)닷넷이란? 마이크로소프트에서 개발한 프로그램 개발 및 실행 환경이다.CLS(Common Language Specific…

ojc.asia

이미지 썸네일 삭제
닷넷이란? CLI, CLS, CLR, CTS, 어셈블리 VS 2022, C# HelloWorld, Main함수

닷넷이란? CLI, CLS, CLR, CTS, 어셈블리 VS 2022, C# HelloWorld, Main함수C#닷넷이란?CLI, CLS, CLR, 어셈블리VS 2022, C# HelloWorld닷넷이란?(CLI, CLR, CTS, CLS)닷넷이란? 마이크로소프트에서 개발한 프로그램 개발 및 실행 환경이다.CLS(Common Language Specific…

ojc.asia






닷넷이란?  CLI, CLS, CLR, CTS, 어셈블리  VS 2022, C# HelloWorld, Main함수

C#




 

닷넷이란?

CLI, CLS, CLR, 어셈블리

VS 2022, C# HelloWorld





 닷넷이란?(CLI, CLR, CTS, CLS)


  • 닷넷이란마이크로소프트에서 개발한 프로그램 개발 및 실행 환경이다. 


  • CLS(Common Language Specification) : 닷넷 컴파일러가 지원해야 하는 최소한의 표준규약으로 C#.NET, VB.NET, C++.NET, F#등 닷넷 프레임웍 언어가 반드시 지켜야 하는 언어 스펙으로 CLS를 따르는 언어라면 어떠한 언어라도 닷넷 프레임워크에서 실행가능하다.


  • CLR(Common Language Runtime) : 닷넷의 실행환경. 닷넷 언어의 컴파일된 자원들은 CLR이라는 독립적인 환경에서 실행된다. 즉 소스코드를 컴파일 하면 닷넷 어셈블리가 되는데, 이 어셈블리가 CLR 위에서 동작한다.VS 2022에서는 C#, C++, VB, F#, Python, Node.js, JavaScript, TypeScript 등의 언어를 지원한다. 사용자가 컴파일된 중간언어 파일인 .exe를 실행하면 CLR이 메모리에 로드되고 .exe를 번역하여 기계어(머신코드)로 변환 후 OS위에서 실행을 한다.






  • CTS(Common Type System) :  닷넷 호환 언어가 지켜야할 타입의 표준 규격. C#에서는 4바이트 정수를 int 라고 사용하고, VB.NET에서는 Integer라고 사용한다. 하지만 이들은 모두 닷넷의 공용 타입인 System.Int32 타입이다.


  • CLI(Common Language Infrastructure) : CTS를 명세를 포함하고 MSIL(중간언어)에 대한 코드정의, 메타데이터와 이를 포함하는 MSIL(중간언어)의 구조를 포함하여 표준사양으로 기술한다. 결국 닷넷 프레임워크는 CLI의 구현체로 보면 된다.


  • Visual Studio.NET 2022는 C#, C++, VB, F#, Python, Node.js, JavaScript, TypeScript 등 여러 언어들을 지원하며 닷넷 환경에서 어느 프로그래밍 언어로 작성하던지 컴파일 된 코드(MSIL, Microsoft Intermediate Language)는 같다는 것이 아주 강력한 특징이다. 즉 프로그래머가 가장 자신 있고 편한 언어로 개발하면 된다는 것이다. 그렇지만 대부분 C#을 많이 사용하고 있다. C#은 자바의 객체지향 특징과 C++의 강력함, VB처럼 쉬운 통합환경의 3가지 요소가 결합된 최고의 언어라고 할 수 있다. 


  • C#으로 프로그래밍을 하기 위해서는 닷넷프레임워크에 대한 이해가 우선되야 하는데 먼저 CLR(Common Language Runtime)에 대해 알아보자. CLR의 Architecture는 아래와 같다. 자바언어로 생각하면 JVM 이라고 보면 된다.



  • CLR(닷넷 환경의 런타임)은 하부구조로 OS를 가지며 OS 위에서 닷넷 Application을 실행할 수 있게 해주는 중요한 환경이다. 이 때문에 닷넷 환경하에서 어떠한 언어로 개발하던지 컴파일된 파일(중간언어, IL)은 같은 모양을 가지며 파일들은 CLR 위에서 여러 라이브러리 등을 참고해서 실행 하게 된다.


C#, HelloWorld, Main 함수


VS.NET에서 HelloWorld 작성 하기


  • Visual Studio .NET 을 실행
  • 파일 -> 새로만들기 -> 프로젝트 메뉴선택
    • (프로젝트는 c:\dotnet\project\OnjConsole1 이라고 하자)
  • Visual C#, 콘솔 응용프로그램 선택


using System;


namespace OnjConsole1

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("Hello Onj");

        }

    }

}


[실행 : Ctrl + F5]

[결과]

Hello Onj



[메인 함수에서 인자 받아 들이기]


using System;


namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("Hello {0}, {1}",args[0], args[1]);

        }

    }

}


[실행]

메인함수에 인자 주기 : 프로젝트에서 우측 마우스버튼 클릭 하여 속성창에서 디버그의 디버그시작프로필UI열기를 클릭하여 명령줄 인스에 메인함수에 넣어 줄 인자를 기술한다. 



onj oraclejava


[결과] Hello onj oraclejava


명령프롬프트(Command Prompt)을 이용한 컴파일


D:\dotnet\project 폴더에 Hello.cs 파일을 만들자


[Hello.cs]

class Program

{

      static void Main(string[] args)

      {

          System.Console.WriteLine("Hello {0}", args[0]);

      }

}


자바와 달라 class명이 꼭 파일명일 이유는 없다.


[명령프롬프트 컴파일]

도구 메뉴 VS2022용 개발자 명령 프롬프트


D:\dotnet\project 로 이동, D:\dotnet\project>csc Hello.cs


[실행]

D:\dotnet\project>Hello ONJ


[결과]

Hello ONJ


C#에서의 메인함수(Main)


응용프로그램의 진입점(Entry Point), 닷넷 응용프로그램을 실행 시키는 런타임인 CLR(Common Language Runtime)은 프로그램 시작을 위해 Main 함수를 호출하게 되는데 Main 함수가 바로 프로그램의 진입점이 되는 것이다. 


위 예제에서 아래와 같이 Main 함수를 정의하였다.


static void Main(string[] args)


- 메인함수 첫글자 M

메인 함수의 첫글자 'M' 은 대문자이며 나머지는 소문자.


- static : Main함수가 static로 정의된 이유는 CLR에서 객체 생성없이 바로 메인함수를 호출하기 위해서이다.

 

- args 매개변수 : Main 메소드 안의 인자로, 문자열(string) 배열을 정의하고 있는데 프로그램을 시작 시 Main 함수로 전달하고자 하는 값이 있는 경우 사용된다.  필요하지 않다면 생략해도 되고 반드시 args라고 해야 하는 것은 아니다.



- Return 타입 : 위 예제에서 Main 함수는 리턴값이 없는 void 형으로 정의되었는데 int도 가능하다. int 형으로 정의할 경우에는 통상 종료할 때의 상태를 런타임(CLR)에 알려주기 위한 것인데, 반환 값이 int 형으로 정의되면 프로그램을 호출하는 쪽으로 자신의 상태 정보를 전달할 수 있다 


  • C# 응용프로그램 종료조건

C# 응용프로그램은 Main 함수의 실행이 끝나거나, 반환(return) 될 때 종료한다.


- Main 함수는 오직 한 개

하나의 C# 응용프로그램에는 하나의 Main 메소드만 있을 수 있다.

 

 

#닷넷, #닷넷이란, #CLI, #CLS, #CLR, #CTS, #어셈블리 #VS2022, #HelloWorld, #닷넷교육, #시샵교육, 닷넷, 닷넷이란, CLI, CLS, #CLR, CTS, 어셈블리 VS2022, HelloWorld, 닷넷교육, 시샵교육


(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...