기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

[WPF] UserControl 에서 Property 속성 추가 방법
C#/WPF

[WPF] UserControl 에서 Property 속성 추가 방법

2020. 6. 10. 10:50
반응형

[WPF] UserControl 에서 Property 속성 추가 방법

 

컴포넌트 + 컴포넌트로 사용자 정의 컴포넌트를 생성하고 싶을때 UserControl이라는 Xaml을 생성해서 사용합니다.

일반적인 예시로 색상이 있는 TextBlock과 검은색으로 지정된 TextBlock이라는 컴포넌트를 생성했습니다.

 

 

1. UserControl의 Xaml 코드

 

<UserControl x:Class="EPCM.HMI.Market.Component.ST1Canvas"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:EPCM.HMI.Market.Component"
             mc:Ignorable="d" Background="White" Width="45.167" Height="20.167">
    <Grid>
        <TextBlock x:Name="Title" HorizontalAlignment="Left" Height="8.941" Margin="2.5,1.839,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="35.926" FontSize="6" Text="ST1 - TR" FontWeight="Bold"/>
        <TextBlock x:Name="Voltage" HorizontalAlignment="Left" Height="8.024" Margin="2.5,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="36.801" FontSize="6" Text="2,000 kVA" Foreground="#FF00B0F0" FontWeight="Bold"/>
    </Grid>
</UserControl>

 

ST1Canvas.xaml이라는 이름으로 UserControl을 생성했고요,

위 자멜 코드와 같이 TextBlock에 x:Name 태그로 임의의 이름을 지정해줍니다.

 

 

 

2. ST1Canvas.cs의 코드

 

namespace EPCM.HMI.Market.Component
{
    /// <summary>
    /// ST1Canvas.xaml에 대한 상호 작용 논리
    /// </summary>
    public partial class ST1Canvas : UserControl
    {
        public ST1Canvas()
        {
            InitializeComponent();
        }

        [Category("TextTitle"), Description("지정할 텍스트")]
        public string TextTitle
        {
            get
            {
                return this.Title.Text;
            }
            set
            {
                this.Title.Text = value;
            }
        }
    }
}

 

이제 Property를 등록할 차례인데, 이 TextTitle이라는 프로퍼티를 등록해서 UserControl을 사용할 때 Title이라는 이름이 변경되게끔 합니다.

TextTitle이라는 String Get, Set 변수를 등록하고 x:Name태그에서 사용한 Title에 초기화를 해줍니다.

 

 

3. UserControl의 사용

 

<UserControl
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"      
             xmlns:global="clr-namespace:EPCM.ENG.Common;assembly=EPCM.ENG.Common"
             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"  
             xmlns:res="clr-namespace:EPCM.Data.Properties;assembly=EPCM.Data"
             xmlns:UC="clr-namespace:EPCM.HMI.Market.Component"
             xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing" x:Class="EPCM.HMI.Market.View.GridView1"
             mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="800" Width="3202" Height="2400">

 

clr-namespace:EPCM.HMI.Market.Component

먼저 UC라는 이름의 태그로 namespace를 등록해주고,

 

<UC:ST1Canvas Canvas.Left="86.787" Canvas.Top="97.27" TextTitle="Sample"/>

 

UserControl를 사용하고 TextTitle의 프로퍼티를 호출해서 값을 변경하면 유저컨트롤에서 사용했던 텍스트 값이 자동적으로 변경됩니다.

반응형
저작자표시 변경금지 (새창열림)

'C# > WPF' 카테고리의 다른 글

WPF Fody 사용 방법  (0) 2020.09.16
[C#] nuget package manager console 사용 방법  (0) 2020.09.03
[C#] Lazy Initialization(지연 초기화)란?  (0) 2020.09.01
[WPF] Text String Format Binding 사용 방법  (0) 2020.08.31
[WPF] UserControl에 Binding하기 위한 DependencyProperty 사용 방법  (11) 2020.07.03
    'C#/WPF' 카테고리의 다른 글
    • [C#] nuget package manager console 사용 방법
    • [C#] Lazy Initialization(지연 초기화)란?
    • [WPF] Text String Format Binding 사용 방법
    • [WPF] UserControl에 Binding하기 위한 DependencyProperty 사용 방법
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바