반응형

주말에 차사고를 당해서

어느 병원을 가야하나 막막했는데,

집앞에 이런 좋은 병원이 있다는 거에

놀라고, 친절함에 또 놀랐던

병원에 대해 소

개하겠습니다

반응형

지난 주말 토요일

회사에서 행사가 있어서 가족들과 같이

차를 타고 회사를 향하는길...

경인 고속도로가 좀 막히는

시간이었는데,

다행히도 무사히 빠져 나가서

가려던 찰나...

쾅~!!!!!!!

차량 사고사진

이게 뭔일인지 생각할 찰나

사고났다....라는걸 직감할 수 있었어요.

뒤 차주분의 부주의로 인한

접촉사고...

얼른 보험 처리를 끝내고, 회사 행사에 참석 후

집에 돌아 왔는데,

목이며, 어깨며,

살짝 뻐근했지만

시간도 늦었고, 괜찮아 지려니 하고

서둘러 병원을 찾지는 않았답니다.

그런데 아뿔싸.....

주말인걸 깜빡하고,

다음날 부랴부랴 정형외과든 신경외과든

영업을 하는 곳을 찾아봤는데,

의외로 집과 가까운 곳에

오후 2시까지 영업을 하는 곳이 있더라구요.

그것도 일요일에

 

"얘들아, 얼른 옷입어라~~~!!!"

아이들도 얼른 준비를 시키고 찾아간 병원은

상동 바른통증의학과.(7호선 상동역 세이브존 6층)

http://www.xn--2q1bq0ii9b02g.com/

 

상동정형외과 | 상동바른통증의학과

상동 정형외과 진료, 경기 부천시 상동, 세이브존 부천상동점, 상동역, 정형외과, 재활의학과, 신경외과, 도수치료, 체외충격파

www.xn--2q1bq0ii9b02g.com

진료 시간은

 

월~금 9:00~20:00
(13:00~14:00 휴게시간)
토~일 9:00~14:00

 

입니다.

그리고 위치는 아래 참고하시기 바랍니다.

 

상동역에서 나오면 세이브 존이 있는데,

거기 6층에 있어요.

접근성이 너무 좋고,일단 세이브존 주차장을

이용할 수 있어서 편리하답니다.

도착한 병원은 입구부터 아주 깔끔하고 마음에 들었어요.

상동 바른통증의학과 정문

실내도 아주 깔끔하고, 사진에서 보이듯이 365일 진료를 하는 병원이에요.

주말에도 걱정없이 방문이 가능한 곳

여러가지 물리치료도 가능하고,

무엇보다 일하시는 분들이 다들 너무 친절하시고

설명도 잘 해 주시더라구요.

실내사진1

접수 과정도 매우 간편하고 신속했어요.

접수 데스크의 직원들 모두 친절하고 세심한 배려를 아끼지 않았어요.

실내사진2

실내사진3

처음 방문하는 거였는데도 불구하고,

접수 과정에서부터 친절한 안내와 설명을 받을 수 있어

매우 만족스러웠습니다.

그리고 접수 직원이 제 몸 상태를 꼼꼼히 물어도 보시고

빠르게 처리해 주셔서 대기 시간도 길지 않았습니다.

실내사진5

실내사진6

탈의실 내부도 아주 깔끔했어요.

옷도 향긋한 냄새가 나서

기분까지 좋아지는 느낌이었구요.

탈의실

진료실로 들어가자마자 의사 선생님께서

걱정의 인사부터 건네주시더라구요.

덕분에 마음의 위안이 많이 되었지요.

의사 선생님은 매우 친절하셨고 앞으로의 치료에 대해

자세히 설명을 해주시기도 했어요.

사고 경위를 들으시고 나서는

통증의 정도, 통증이 발생하는 부위 등을 꼼꼼히

말씀해주시고,

필요한 검사를 신속하게 진행해 주셨어요.

초음파실(검사)

여기 저기

X-ray를 자세히 꼼꼼히 찍어주시더라구요.

어디하나 놓치는 부분 없이~

 

일요일 1시 넘어서 가는 바람에

다른 물리치료를

받을 수 있는 상황은 아니었지만

정말 교통사고는 그 후유증을

알 수 없잖아요~

그런데, 여기에서 진료 받으면

정말 하나도 빠짐없이 꼼꼼히 진단 받을 수 있겠구나

하는 생각에

마음이 많이 놓이더라구요

병원 안에는 아래 영상처럼

간단한 병원 소개자료도 있어서

참고하기 좋았답니다.

 

다음엔 좀 더 시간 여유를 가지고 치료 받으러 가야겠어요.

 

여러분 항상 운전 조심하시고,

혹시라도 저와 같은 일을 겪게 되신다면

상동 바른통증의학과 가보시기를 추천드립니다.

 

반응형
반응형
티스토리 블로그
오늘도 블로그 완성
챌린지에 대해 
소개드릴게요.

https://www.tistory.com/event/write-challenge-2024" target="_blank" rel="noopener" data-mce-href="http:// https://www.tistory.com/event/write-challenge-2024">http:// https://www.tistory.com/event/write-challenge-2024 

 

작심삼주 오블완 챌린지

오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.

www.tistory.com

 

 

중요 포인트
1.챌린지 소개에서 알림 신청을 해놓는다.(깜빡하고 며칠 지난 다음부터 참가하면 아쉽잖아요~)
2.오블완 챌린지를 널리 알린다.(지금 보고 있는 사이트 처럼 오블완 챌린지에 대해 내 블로그에 홍보하기)
3.챌린지 기간동안 1일 1블로그 작성하기(11월 7일 ~ 11월 27일)
4.상품받기

 

 

1.알림신청

일단 티스토리 블로그의 알림을 보시면, 관련 내용이 나오는데

챌린지 소개에 보면

아래와 같이 

알림 신청이 나온다.

 

일단 먼저

알림 신청부터 해놓고~~~

오블완 챌린지 일정

 

2.오블완 챌린지 홍보

여러분은 지금 

오블완 챌린지에 대한 홍보를 위한

블로그를 보고 계신 중입니다

이미...

반응형
3.1일 1블로그 작성

11월 7일...

알림이 오겠죠~!?

 

그럼 그때부터 

1일 1블로그를 하는 겁니다.

운동하듯이

그냥 몸이 가는대로...

생각나는대로...

주저리 주저리...

써내려 가다보면

 

오늘도

포스팅 작성 완료~!!!

가 되겠죠~

 

 

4.상품받기

열심히 매일매일

빠지지 않고

작성하면,

그러면, 

그러면,

 

 

 

 

좀 더 

많이 많이 힘내면,

 

 

이렇게도 가능하겠죠~??^^;;

 

상품 좀 더 많이 준비해 주시지~~

하는 아쉬움이 너무너무 

많이 들지만.....

 

그래도 우리 한번 해봐요~

 

https://www.tistory.com/event/write-challenge-2024" target="_blank" rel="noopener" data-mce-href="http:// https://www.tistory.com/event/write-challenge-2024">http:// https://www.tistory.com/event/write-challenge-2024 

 

작심삼주 오블완 챌린지

오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.

www.tistory.com

 

 

모두 모두 화이팅~~!!!!!!!

 

반응형
반응형
4-5살 아이들은 인지, 사회성, 언어, 감정 조절 등 다양한 영역에서 큰 변화를 경험하며 성장하는 시기입니다. 이번 글에서는 이 시기 아이들에게 필수적인 교육, 가르치는 데 효과적인 방법, 그리고 부모로서의 역할에 대해 자세히 알아보겠습니다. 이 글을 통해 부모님들이 아이의 발달을 돕기 위해 무엇을 준비해야 할지 고민해보는 계기가 되었으면 합니다.

 

내용 요약

 

4-5살은 아이가 점점 더 많은 경험을 통해 세상을 이해하고 자신만의 사고 방식을 형성해 나가는 중요한 시기입니다. 이 시기 아이들은 언어와 감정을 더욱 자유롭게 표현하고, 친구와의 상호작용을 통해 사회성을 키워갑니다. 이러한 발달을 촉진하려면 부모와의 교감, 환경적 지원, 그리고 적절한 교육이 필요합니다. 이 글에서는 이 시기 아이들에게 꼭 필요한 교육 요소들을 살펴보고, 이를 통해 아이가 건강하게 성장할 수 있는 기반을 마련하는 방법에 대해 다뤄보겠습니다.

 

목차

1.4-5살 아이들에게 필요한 필수 교육
2.아이들에게 효과적으로 가르치는 방법
3.부모의 역할
4.결론
반응형
4-5살 아이들에게 필요한 필수 교육

① 사회성 발달과 감정 조절

이 시기 아이들은 또래 친구들과의 놀이를 통해 상호작용을 배우며 사회성을 발달시킵니다. 이 과정에서 아이들은 의견이 다를 때 감정을 조절하고 타협하는 방법을 익히게 됩니다. 예를 들어, 놀이 도중 장난감을 공유하거나 놀이 규칙을 정하는 상황에서 자연스럽게 갈등 상황을 경험하게 되는데, 이 과정이 아이의 사회성 발달에 중요한 역할을 합니다.

부모의 역할: 부모는 아이가 이러한 갈등 상황을 겪을 때 즉시 개입하기보다는 아이가 스스로 해결할 수 있도록 기다려주는 것이 중요합니다. 만약 아이가 힘들어할 때는 상황을 설명해주고, 친구의 입장을 이해할 수 있도록 도와주세요. 이러한 경험을 통해 아이는 타인과의 상호작용을 보다 유연하게 받아들이고, 자신의 감정을 건강하게 표현할 수 있게 됩니다.

② 언어 발달과 의사소통 능력

4-5살 아이들은 언어적으로도 큰 발전을 이루는 시기입니다. 다양한 어휘와 문장을 습득하며 자신의 생각과 감정을 표현할 수 있게 됩니다. 이야기를 통해 언어를 확장할 수 있는데, 이때 부모가 제공하는 언어 자극이 매우 중요합니다. 특히, 아이와 대화할 때 열린 질문을 통해 아이가 자신의 생각을 더욱 풍부하게 표현할 수 있도록 유도하는 것이 좋습니다.

예시: “오늘 어린이집에서 어떤 일이 있었니?” 같은 질문을 통해 아이가 구체적으로 상황을 설명할 수 있게 도와주면, 아이의 언어 능력뿐만 아니라 사고력도 함께 발달하게 됩니다.

③ 창의력과 문제 해결 능력

창의력과 문제 해결 능력도 4-5살 시기에 본격적으로 발달하기 시작합니다. 아이가 다양한 놀이를 통해 새로운 방식으로 생각하고 시도하면서 창의력을 키울 수 있습니다. 문제 해결 능력은 실패를 경험하면서도 다시 시도할 수 있는 기회를 제공함으로써 자연스럽게 발달됩니다.

부모의 역할: 아이가 놀이에서 어려움을 겪을 때는 해결 방법을 직접 제시하기보다는, 힌트를 주고 아이가 스스로 해결할 수 있도록 도와주세요. 이러한 방식은 아이가 도전 의식을 가지고 문제에 접근할 수 있도록 자립심을 길러줍니다.

아이들에게 효과적으로 가르치는 방법

 놀이 기반의 학습

아이에게는 놀이가 가장 자연스러운 학습 방식입니다. 아이들이 놀이를 통해 사회성, 창의성, 언어적 표현력을 동시에 기를 수 있습니다. 예를 들어, 역할놀이를 통해 상호작용하는 법을 배우고, 블록 놀이를 통해 창의적 사고를 기를 수 있습니다. 놀이를 통해 새로운 개념을 배우도록 돕는 방식이 가장 효과적입니다.

예시: 블록을 쌓는 놀이를 하면서 “이 블록은 여기에 어떻게 놓을까?” 같은 질문을 통해 아이가 창의적인 해결책을 고민하게 해보세요.

 일상 속 자연스러운 학습

아이들에게 특별한 학습 시간이 아닌 일상 속에서 자연스럽게 배울 수 있는 기회를 제공하는 것이 좋습니다. 부모와 함께 장을 보거나, 요리를 하는 과정에서 아이는 새로운 경험과 개념을 습득하게 됩니다. 일상적인 상황에서 숫자 개념, 물체의 이름 등 다양한 지식을 배울 수 있습니다.

예시: 장을 볼 때 “우리가 사야 할 사과는 몇 개일까?” 같은 간단한 수 개념 질문을 통해 아이가 수학적 개념에 자연스럽게 접근할 수 있습니다.

 부모의 일관된 태도와 인내심

이 부분이 부모로서 아이들을 가르칠 때 가장 하기 힘든 부분인데요. 아이들에게 인내심은 매우 중요한 덕목입니다. 그래서 아이가 스스로 해결할 수 있는 시간을 제공하고, 실패를 경험해도 다시 시도할 수 있도록 지지해 주세요. 아이들이 스스로 문제를 해결하고 자신감을 느낄 수 있는 기회를 제공하는 것이 중요합니다. 그러니 아이가 잘 하지 못하더라도 부모는 옆에서 가르쳐 줄것이 아니라 잘 못하고 실패하더라도 끝까지 스스로 해결해 보는 연습을 할 수 있도록 기회를 제공해 주는 것이 필요합니다.

부모의 역할: 아이가 어떤 과정을 시도하더라도 섣불리 개입하지 않고, 스스로 문제를 해결할 수 있도록 인내심을 가지고 기다려주는 것이 필요합니다.

부모의 역할

① 적극적 경청과 긍정적인 반응

아이들은 부모가 자신에게 집중하고 있다는 느낌을 받을 때 자신감을 키우고 더 적극적으로 표현하게 됩니다. 부모가 아이와 대화할 때 아이의 말을 진심으로 경청하고, 긍정적인 피드백을 제공하는 것이 중요합니다.

예시: “네가 친구에게 양보해주었구나. 정말 멋졌어!”라는 식의 구체적인 칭찬은 아이가 사회성을 배워나가는 데 큰 도움이 됩니다.

② 안정적인 환경과 일관된 규칙

아이들은 안정적이고 예측 가능한 환경에서 성장할 때 더욱 잘 발달합니다. 일관된 규칙과 일상을 제공함으로써 아이가 자신이 안전하다는 느낌을 받을 수 있도록 도와주세요. 부모가 일관된 태도를 유지할 때, 아이는 혼란스러워하지 않고 부모의 지시를 신뢰하게 됩니다.

부모의 역할: 일상 생활 속에서 규칙을 정하고, 그 규칙을 일관성 있게 지키는 것이 중요합니다. 이러한 환경은 아이가 자기 통제력을 기르고 타인과의 관계에서 자신의 역할을 이해하는 데도 도움이 됩니다.

 긍정적인 모델링

아이들은 부모의 행동을 관찰하며 자연스럽게 배웁니다. 부모가 일상 속에서 감정을 조절하고 대화로 문제를 해결하는 모습을 보여주는 것은 아이에게 큰 교훈이 됩니다.

부모의 역할: 아이와의 갈등 상황에서도 차분하게 대화를 통해 해결하는 모습을 보여주는 것이 중요합니다. 이런 경험을 통해 아이는 갈등이 있을 때 폭력적이지 않은 방법으로 해결할 수 있다는 것을 배우게 됩니다.

결론

 

4-5살은 아이의 전반적인 발달에 중요한 시기입니다. 이 시기에 필요한 다양한 교육과 지원을 통해 아이는 자기 자신을 이해하고 타인과 상호작용하는 법을 배우게 됩니다. 부모는 아이에게 적절한 가이드를 제공하고, 아이가 성장하는 과정에서 든든한 지지자가 되어줄 필요가 있습니다. 올바른 교육을 통해 아이의 성장과 발달을 돕는 것이 부모의 큰 역할임을 다시금 깨닫게 됩니다.

 

 

개인 소감

 

아이를 키우면서 부모로서 책임감과 함께 계속해서 배워나가야 할 것이 많다는 것을 느낍니다. 특히 4-5살 시기의 아이들과 상호작용하며, 아이들이 어떻게 세상을 이해해가는지 지켜보는 것은 값진 경험입니다. 부모로서 지켜봐 주고 인내하며, 아이가 스스로 성장할 수 있도록 도와주는 일이 쉽지만은 않지만 그만큼 보람이 있는 일이라고 생각합니다. 아이가 스스로의 방식으로 세상을 이해해 가는 과정을 존중하고, 조금씩 인내심을 기르며 함께 나아가고자 합니다. 아이가 행동하는 한순간의 모습만을 보고 아이의 미래 모습을 그리며, 걱정하거나 답답해 하기 보다는 아이가 조금씩이라도 성장해 가고 있는 모습이 보인다면, 하루 하루를 보람있고 뜻있게 생각하면서 지낸다면 아이와 함께 부모의 마음도 조금씩 성장할 것이라고 생각합니다. 부모님들~! 너무 조바심내고 걱정하지 마시고 잘 못하더라도 아이가 스스로 하게끔, 그래서 무언가를 느끼고 배울 수 있게끔 해주신다면 분명 아이도 많은 성장을 할것이니 믿고 기다리시기 바랍니다.

'세살 버릇 여든까지 간다'는 말 아시죠~!? 이런 말이 괜히 나온 말이 아닌거 같다는 생각이 많이 듭니다. 결국 어려서부터 부모가 옆에서 하나부터 열까지 모든 걸 다 가르치고 알려준다면, 그아이는 커서도 부모에게 의지하는 그런 나약한 사람으로 자라게 되는 것입니다. 그러니, 명심하십시오. 아이에게서 배움의 기회를 빼앗지 마십시오.

반응형
반응형

 

똑똑한 사람은 가르치지 않아도
알아서 똑똑해 질까?에 대한 이런 저런
자료를 정리해 본 내용입니다.
반응형
내용 요약

 

이 글에서는 똑똑한 사람들이 스스로 학습할 수 있는 능력에 대해 탐구합니다.
전통적으로, 지능이 높은 사람들은 별도의 교육 없이도
독립적으로 학습할 수 있다고 여겨져 왔습니다.
그러나 이는 지능뿐만 아니라 개인의 학습 스타일과 동기부여에 따라 달라질 수 있습니다.
이 글에서는 지능과 학습 능력의 관계, 교육의 필요성,
그리고 효과적인 학습 방법에 대해 논의합니다.

목차
1.지능과 학습 능력의 관계
2.교육의 중요성
3.효과적인 학습 방법
4.결론

 

1. 지능과 학습 능력의 관계

 

지능은 학습 능력의 한 요소일 뿐입니다. 일반적으로 IQ(지능지수)가 높은 사람들은 정보 처리 능력이 빠르고, 문제 해결 능력이 뛰어나며, 비판적 사고가 발달해 있습니다. 이러한 특성은 스스로 학습할 수 있는 능력을 높이는 데 유리합니다. 예를 들어, 과학, 기술, 공학, 수학(STEM) 분야에서 높은 지능을 가진 학생들은 복잡한 개념을 더 쉽게 이해하고 적용할 수 있습니다.

그러나 지능이 낮은 사람이 학습할 수 없는 것은 아닙니다. 지능이 평균 이하인 사람들도 꾸준한 노력과 적절한 지원을 통해 충분히 학습할 수 있습니다. 학습은 개인의 경험과 환경에 따라 크게 달라지며, 다양한 학습 방식이 존재합니다. 예를 들어, 감각적 학습자(비주얼, 오디오, 키네스틱 등)는 각각 다른 방식으로 정보를 처리합니다. 따라서 학습 방법이 개인에 맞지 않으면, 지능이 높더라도 학습이 어려워질 수 있습니다.

 

 

2. 교육의 중요성

 

지능이 높다고 해서 무조건 독립적으로 학습할 수 있는 것은 아닙니다. 적절한 교육과 멘토링은 개인의 잠재력을 극대화하는 데 필수적입니다. 특히 복잡한 주제나 기술을 배우는 경우, 효과적인 학습을 위해 누군가의 안내가 필요할 수 있습니다. 교육은 단순히 지식을 전달하는 것이 아니라, 문제 해결 능력과 비판적 사고를 기르는 데 도움을 줍니다.

예를 들어, 수학 문제를 스스로 풀려 할 때, 개념이 명확하지 않으면 쉽게 어려움에 직면할 수 있습니다. 이럴 때, 좋은 멘토나 교사의 지도가 있다면 문제를 더 효과적으로 해결할 수 있습니다. 교육은 기초 지식을 쌓는 데 필요한 도구와 자원을 제공하며, 이는 결국 스스로 학습할 수 있는 기반이 됩니다.

또한, 교육은 개인의 자신감을 높이는 데도 중요한 역할을 합니다. 자신이 알고 있는 것을 다른 사람에게 설명할 수 있는 능력은 자신감을 키우고, 이는 다시 스스로 학습하려는 의지를 높입니다. 한 연구에 따르면, 자기주도적 학습 능력은 학생의 학업 성취도와 직결된다고 합니다. 따라서 교육의 중요성을 간과할 수 없습니다.

 

 

3. 효과적인 학습 방법

 

효과적인 학습 방법은 개인마다 다르지만, 반복 학습과 실습은 매우 중요합니다. 문제를 반복적으로 풀어보는 것이 수학 학습에 특히 효과적입니다. 반복 학습은 뇌가 정보를 장기 기억으로 전환하는 데 도움을 주며, 실습을 통해 이론을 실제로 적용해볼 수 있습니다.

학습 목표를 설정하고 그 목표에 도달하기 위한 계획을 세우는 것도 중요합니다. 예를 들어, 수학에서 특정 주제를 마스터하기로 결심한 경우, 그 주제와 관련된 문제를 매일 일정량 풀어보는 것입니다. 이러한 방식은 학습을 구조화하고 지속적인 동기를 부여하는 데 큰 도움이 됩니다.

또한, 다양한 자료를 활용하여 자기 주도적으로 학습하는 습관을 기르는 것도 좋습니다. 독서, 온라인 강의, 그리고 스터디 그룹은 모두 학습에 도움을 줄 수 있는 유용한 자원입니다. 특히 스터디 그룹은 서로의 생각을 공유하고 질문을 주고받을 수 있어, 더 깊이 있는 이해를 도와줍니다. 이처럼 다양한 접근 방식을 통해 학습할 때, 개개인의 강점을 최대한 발휘할 수 있습니다.

 

 

4. 결론

 

결국, 똑똑한 사람이 스스로 학습할 수 있는 능력은 단순히 지능에만 국한되지 않습니다. 개인의 학습 스타일, 동기부여, 그리고 교육의 역할이 모두 중요한 요소로 작용합니다. 지능이 높더라도 교육과 지도의 필요성을 무시할 수는 없습니다. 따라서 모든 사람에게 적절한 교육이 필요하며, 이는 독립적인 학습 능력을 기르는 데 큰 도움이 될 것입니다.

학습은 단지 지식을 쌓는 과정이 아니라, 삶을 더 풍요롭게 만들고, 개인의 성장을 촉진하는 중요한 과정입니다. 똑똑한 사람이라고 해서 항상 스스로 학습할 수 있는 것은 아니며, 모든 사람은 각자의 방식으로 배우고 성장할 수 있는 잠재력을 가지고 있습니다. 따라서, 우리는 서로에게 필요한 지식과 경험을 나누며, 함께 성장하는 방향으로 나아가야 할 것입니다.

 

반응형
반응형
해당 포스팅은 개인적으로 C# WPF를 공부하면서 익힌 내용을 기억에 남기기 위한 작업의 일환으로 작성된 글로서
일부 내용에 오류가 있을 수도 있으니 참고하시기 바랍니다.

 

 

C#WPF 프로그래밍을 할때,RelayCommand를
정의해주고 UI에서 만든 Button과 연결하여
사용하는 경우가 많은데,
 그러한 RelayCommand에서
사용하는 함수에 대해
알아보자.

 

내용 요약

 

C# WPF의 RelayCommand에서 자주 사용하는 Delegate, Action, Func에 대해 설명하겠습니다. 이 개념들은 WPF에서 MVVM 패턴을 구현할 때 중요하게 사용됩니다.

목차
1.Delegate
2.Action
3.Func
4.RelayCommand에서 Action과 Func의 역할
5.RelayCommand 사용 예시

 

1. Delegate (델리게이트)

Delegate는 C#에서 메서드를 참조하는 형식입니다. 특정 메서드의 참조를 저장하고 그 메서드를 나중에 호출할 수 있습니다. 덕분에 메서드를 변수처럼 다룰 수 있으며, 메서드를 인수로 전달하거나 이벤트 핸들링에서 사용됩니다.

// Delegate 선언
public delegate void MyDelegate(string message);

// Delegate 사용 예시
public class MyClass
{
    public void PrintMessage(string message)
    {
        Console.WriteLine(message);
    }
}

MyDelegate del = new MyClass().PrintMessage;
del("Hello, Delegate!");  // 출력: Hello, Delegate!

2. Action

Action은 리턴값이 없는 메서드를 참조하는 델리게이트입니다.

여러 개의 매개변수를 받을 수 있지만

리턴 타입이 void라는 특징이 있습니다.

 

// 매개변수 없는 Action 예시
Action action = () => Console.WriteLine("No parameters");
action();  // 출력: No parameters

// 매개변수 있는 Action 예시
Action<int, string> action = (x, y) => Console.WriteLine($"{x}, {y}");
action(5, "Hello");  // 출력: 5, Hello

3. Func

Func은 리턴값이 있는 메서드를 참조하는 델리게이트입니다.

마지막 매개변수가 리턴 타입을 나타내며,

0개 이상의 매개변수를 받을 수 있습니다.

 

// 리턴값 있는 Func 예시
Func<int> getNumber = () => 42;
int result = getNumber();  // 결과: 42

Func<int, int, int> addNumbers = (a, b) => a + b;
int sum = addNumbers(5, 3);  // 결과: 8

4. RelayCommand에서 Action과 Func의 역할

RelayCommand는 WPF에서 MVVM 패턴을 구현할 때

버튼 클릭 등의 UI 동작을 처리하기 위해 사용됩니다.

ActionFunc는 RelayCommand 내부에서

명령 실행 로직과 실행 가능 여부를

결정하는 함수로 사용됩니다.

public class RelayCommand : ICommand
{
    private readonly Action _execute;        // 명령 실행
    private readonly Func<bool> _canExecute; // 실행 가능 여부 판단

    public RelayCommand(Action execute, Func<bool> canExecute = null)
    {
        _execute = execute ?? throw new ArgumentNullException(nameof(execute));
        _canExecute = canExecute;
    }

    public bool CanExecute(object parameter)
    {
        return _canExecute == null || _canExecute();
    }

    public void Execute(object parameter)
    {
        _execute();
    }
}

1. Action _execute

_execute는 실제 명령을 실행하는 코드 블록을 참조하며,

사용자 동작(예: 버튼 클릭)을 수행할 때

실행할 동작을 정의합니다.

 

2. Func<bool> _canExecute

_canExecute는 명령이 실행 가능한지 여부를 판단하는 함수로, bool 값을 반환합니다.

 

5. RelayCommand 사용 예시

public class MainViewModel
{
    public RelayCommand GeneratePostCommand { get; }
    public RelayCommand PostToNaverCommand { get; }

    public MainViewModel()
    {
        // Action을 통한 명령 실행 메서드
        GeneratePostCommand = new RelayCommand(GeneratePost);

        // Func<bool>을 통한 조건 추가
        PostToNaverCommand = new RelayCommand(PostToNaver, CanPostToNaver);
    }

    private void GeneratePost()
    {
        Console.WriteLine("Generating Post...");
    }

    private void PostToNaver()
    {
        Console.WriteLine("Posting to Naver...");
    }

    private bool CanPostToNaver()
    {
        return !string.IsNullOrEmpty(GeneratedPost);
    }
}

 

내용 정리
  • Delegate: C#에서 메서드를 참조하는 형식으로, 메서드를 변수처럼 사용할 수 있도록 합니다.
  • Action: 반환값이 없는 메서드를 참조하는 델리게이트입니다.
  • Func: 반환값이 있는 메서드를 참조하는 델리게이트로, 마지막 매개변수로 반환 타입을 설정합니다.
  • RelayCommand: WPF에서 MVVM 패턴을 구현할 때 사용되며, Action을 통해 명령을 실행하고, Func<bool>을 통해 실행 조건을 지정합니다.

이 개념을 이해하면 WPF에서 MVVM 패턴의 명령 시스템을 보다 효율적으로 구현할 수 있습니다.

반응형
반응형
 커피머신 구매를 고민 중이시라면,
커피의 향과 맛을 제대로
살려주는
브레빌(Breville) 반자동 커피머신을
꼭 한번 보시길 바랍니다.


안녕하세요. 오늘은 구매한지 2년이 다 되어가지만 
우리집 가전 제품 중에서 
정말 구매하기 돈 아까워서 
고민에 고민을 하고

고민해서 구매한
하지만 지금은
절대 없어서는 안될,
심지어
개인적으로는 건조기보다도 더 소중하게 생각하는
브레빌 반자동 커피 머신에 대해
사용중 리뷰를 하려고 합니다.
 
https://link.coupang.com/a/bWXKrt

 

브레빌 반자동 커피머신 바리스타 프로 - 에스프레소머신 | 쿠팡

현재 별점 4.7점, 리뷰 140개를 가진 브레빌 반자동 커피머신 바리스타 프로! 지금 쿠팡에서 더 저렴하고 다양한 에스프레소머신 제품들을 확인해보세요.

www.coupang.com

 

이 커피머신은 정말 내가 원하는 취향으로
커피를 뽑아주기 위해
원두를 30단계로 갈아주며,
3초만에 가열되는 히팅 시스템으로
기다리는 시간도 오래 걸리지 않고
빠르게 추출을 할 수 있습니다.
 
중요한건 이런 설정을 아날로그 방식이 아닌
디지털 방식으로 설정하여
항상 원하는 맛의 커피를 즐길 수 있다는 거지요.

 
첨에는
스팀방식으로 커피를 추출하니까
좀 쓰면 고장날 수도 있겠구나 했는데,
전~~~~혀 그런 걱정이나 고민 없이
아주 잘 쓰고 있답니다.

라떼 음료는...

우유를 넣은 라떼를 마시고 싶을 때도
스팀 노즐을 이용해서 아주 미세한 우유거품을 만드는게 
가능합니다.
마셔보면 아주 부드러운 우유 맛에
아이들에게도 맛있는 라떼 음료를
만들어주기에 충분하죠~

 

이렇게 라떼 전용 용기에 만들면 된답니다.

우유 용기 - 스테인레스

저 큰 용기에 2/5정도의 우유를 채우는 정도가 MAX라면

우유 거품이 만들어지는 양이

상당히 많다는 얘기겠죠~~??

 
아쉽지만 이 동영상은
추후에 기회가 되면 올려볼게요
 

 

물사용은...

물사용은,
제품 뒤에 물탱크(?)가 있는데, 용량이 2L정도 되기 때문에
손님이 여러명이 왔을 때,
물탱크를 한번 채운 후 여러 잔의 커피를 뽑는 것도
문제 없더라구요.

전기세는...

전기세 걱정...
절대 할 필요 없습니다.
와이프는 거의 매일 커피를 1~2잔 내려서 
마시는데,
사기 전과 후가 
전기세에서 거의 차이가 나지 않더군요.

오호~~~
여러 잔을 뽑아 마셔도
부담없겠죠~!?

 

에스프레소 커피는...

그러면, 한번 커피를
내려볼게요.
저희는 부엌 싱크대 코너에 설치를 했어요
그게 원두 찌꺼기를 버리기도,
씻기도 편하더리구요.

브레빌 BES878 설치


이렇게 준비를 마치고,
아래 동영상처럼~
# 주의 : 따듯하게 마시려면 커피잔에
뜨거운 물을 절반 정도 채워주신다음
내리기를 추천드려요~^^
내리고 난 후 물을 부으면,
크레마가 금방 없어져버리거든요.

여기서는
두잔 용량으로 뽑을거라 투샷 용기로 원두를
내렸답니다.

커피 내리기 시작~~!!!
(째깍째깍...)

동영상 - 아메리카노 내리기

끝~~~!!!!!

거의 2분만에
커피 두잔이
뚝딱 만들어졌죠!!!!

아메리카노 2잔


음, 평소보단
크레마가 덜 만들어졌지만
(긴장한 탓에^^;;)
나름 잘 만들어진거 같아요.

커피 맛은 원두에따라
달라지겠지만
이렇게 뽑으면
어떤 원두든 원두 맛을
200%는 뽑아낼 수 있겠죠~!?

아래 하단 트레이(?)를 앞으로 빼면

아래 사진 처럼

여러가지 필터를 보관할 수 있게 되어 있답니다.

필터바스켓

세척은...

커피를 다 내렸다면, 씻어야 겠죠??
아주 간단합니다.
커피 찌꺼기를 털어냈으면
애초에 남아있는게 별로 없어서
흐르는 물로
가볍게 헹궈내기만 하면 된답니다.



어떠신가요?
반자동 커피머신 브레빌로

집에서도 맛있는 커피를

즐기시길
추천드립니다~!!!

https://link.coupang.com/a/bWXKrt

 

브레빌 반자동 커피머신 바리스타 프로 - 에스프레소머신 | 쿠팡

현재 별점 4.7점, 리뷰 140개를 가진 브레빌 반자동 커피머신 바리스타 프로! 지금 쿠팡에서 더 저렴하고 다양한 에스프레소머신 제품들을 확인해보세요.

www.coupang.com



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형
반응형

 

이 글은 처음으로
전문(?) 러닝화라고 하는 신발을
구매하고 신어본 느낌에 대한
솔직한 후기입니다.

 
 


https://link.coupang.com/a/bVuERG

Asics (W) 아식스 젤 님버스 26 블랙 D 와이드 - 러닝화 | 쿠팡

쿠팡에서 0.0 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 0 제품도 바로 쿠팡에서 확인할 수 있습니다.

www.coupang.com

 
드디어 아식스 젤 님버스 26을 받았다.
매장에서 사도 되지만,
조금이라도 저렴이로 구매하고픈 마음에
온라인으로 구매를 진행하였다.
 
이런 기다림은
언제나 나에게 또다른 소확행을 주기에...ㅎ

 
평소 신발 사이즈가 265라서
그대로 사이즈 265로 주문~~~
 
그리고 드디어 받은 신발...
얼른 신어보고 싶은 마음에 방에서
양말까지 신어주시고,
신발을 착용해 보았다.
 
어떤 모습일까?

 
디자인은 역시나 봤던 그대로
깔끔하고, 무엇보다 신었을때의 그 느낌은
뭔가 발에 촤~~~악 감기는 듯한...
가벼운듯 밑창과 윗부분이 따로 놀지 않고,
한 몸으로 
조화롭게 만들어진 듯
아주 맘에 들었다.
 
뒷모습도 찍어 주고,

 
앞으로 날씨가 쌀쌀해지니까
긴바지를 입었을때 어찌 보이는지도 궁금해서
한컷!

 
뒤에서 본 모습도 깔끔한 거 같다.
다리가 좀 짧아보인다는...갠 적인 생각은 그저 느낌일뿐 이겠지~ㅋ

 
자, 이제 밖으로 나가보자구~
아직은 날이 더운 편이라 반바지를 입고
신발을 신고 나갔다.
 
흠, 찍고나니 온통 블랙 블랙 하다~(양말만 빼고...)

 

 
와이드라고는 하지만,
내가 신어보기에는 디자인 자체가
와이드해 보이지 않다. 
 

 

 
어디 함 살짝 달려 볼까나~




살짝 달려보았는데, 
오....이건 뭐지~ 하는 느낌이 들었다.
난 분명히 10정도의 힘으로 뛰는데, 
이 신발이 거기에 추가로 2~3 정도는 보태주는 듯한
착각이 들 정도로
앞으로 앞으로 
튀어 나가게 끔 도와주었다.
 
이 느낌 뭐였더라...
그래~~~!!!!!!

 
어릴적 타던 스카이 콩콩(?) ~ !?!?!?
 
이거 신고 마라톤 가야겠는데~!!!!! 

 
처음으로 사본 런닝화였는데,
너무 만족스럽고 앞으로 이것만 계속 
사게 될 거 같다.
 
역시 비싼 신발은 그 만한 값어치를 하는듯 하다.
 
사이즈에 대해 다시 얘기하면,
나의 발 볼 사이즈는 그리 넓지 않으며, 평소 265를 신는데
265를 신어 봤을 때 편안한 착용감이 드는 정도였고,
발가락 쪽은 살짝 여유가 있었다.
 
마라톤을 계획 중이시라면,
이 신발 신고 뛰어보는건 어떠신지요~ㅎㅎ
구매를 하신다면,
아래 링크로~~~
https://link.coupang.com/a/bVuERG

Asics (W) 아식스 젤 님버스 26 블랙 D 와이드 - 러닝화 | 쿠팡

쿠팡에서 0.0 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 0 제품도 바로 쿠팡에서 확인할 수 있습니다.

www.coupang.com

 
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형
반응형
해당 포스팅은 개인적으로 C# WPF를 공부하면서 익힌 내용을 기억에 남기기 위한 작업의 일환으로 작성된 글로서 일부 내용에 오류가 있을 수도 있으니 참고하시기 바랍니다.

 

C# WPF의 비하인드 코드에서 자주 등장하는
필드와 속성에 대한 개념에 대해 이해하고,
get/set 키워드의 동작에 대해
알아보자.

내용 요약

 

C# WPF에서는 필드와 속성이라는 개념이 있는데,

코드의 캡슐화와 데이터 무결성을 위해

필드에 접근할 때에는

속성(property)을 이용할 것을 권장하고 있으며

이런 속성을 이용함으로서

데이터의 유효성 검증부터 읽기/쓰기 전용 접근 제어

그리고 데이터 변경에 대한 로깅 및 이벤트 트리거링 등의

추가 기능을 쉽게 구현할 수 있다.

따라서, 필드와 속성의 개념을 정확히 알고 프로그래밍 하는 것이 중요하다.

본 포스팅에서는 이러한 내용과 개념에 대해 예를 들어가며

설명하도록 하겠다.

(해당 포스팅은 아래의 링크를 참조하여 작성하였다.)

 

https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/fields?source=recommendations

 

필드 - C#

C#의 필드는 클래스 또는 구조체에서 직접 선언되는 모든 형식의 변수입니다. 필드는 포함하는 형식의 멤버입니다.

learn.microsoft.com

 

https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/properties?source=recommendations

 

속성 - C#

C#의 속성은 접근자 메서드를 사용하여 공용 데이터 멤버인 것처럼 private 필드의 값을 읽고, 쓰고, 계산하는 멤버입니다.

learn.microsoft.com

 

목차
1.필드의 정의
2.속성의 정의
3.실습 예제 및 실행 결과

 

1.필드의 정의

필드(Field)는 클래스 또는 구조체에서 직접 선언되는

모든 형식의 변수이다.

일반적으로 필드는 private 또는 protected, public 등의

접근성을 선언해 주어야 한다.

public class Family
{
    private string _firstName = "gildong";    // 필드 (접근성 : private)
    private string _lastName = "Kim";
    private int _age = 30;
}

 

위의 예시에서처럼 _firstName, _lastName, _age는

모두 private 접근 지정자로 선언된

변수수로서

클래스 외부에서는 접근이 불가능한

필드(field)이다.

이러한 필드는 method, property, Indexer등을 통해

접근하도록 해야 잘못된 입력값으로부터 보호할 수 있으며,

선언할 때 연산자를 사용하여 초기값을 지정할 수 있다.

각 필드는 "gildong", "Kim", 30으로

초기화 되었다.

만약, 접근 지정자가 public으로 되어있다면,

클래스 외부에서 인스턴스(객체)의 필드에 접근할 때는

객체 이름 뒤에 마침표를 추가하고 그 뒤에 필드 이름을 추가하면 된다.

public class Family
{
    public string _firstName = "gildong";    // 필드 (접근성 : private)
    public string _lastName = "Kim";
    public int _age = 30;
}
int main()
{
    Family family;
    family._firstName = "hongja";
    family._lastName = "Choi";
    family._age = 27;
}

 

2.속성의 정의

 

속성이란 필드의 값을 읽거나 쓰거나 계산하는

유연한 메커니즘을 제공하는 멤버이다.

속성은 공용 데이터 멤버인 것처럼 사용할 수 있지만

"접근자"라는 특수 메서드 이다.

이 기능은 데이터의 안전성과 유연성을 높이는데 도움이 되며,

이 기능을 통해 privat로 선언된 필드를

외부에서 접근이 가능하도록 할 수 있다.

마치 publi으로 선언하는 것과 별반 차이가 없어 보일 수도 있으나,

속성을 사용하는 이유는

값을 변경하거나 가져올 때,

조건을 통해 필드에 대한 접근을 콘트롤 할 수 있기 때문이다.

 

public class Family
{
    private string _firstName = "gildong";    // 필드 (접근성 : private)
    public string FirstName      // 속성 (접근성 : public)
    {
        get { return _firstName; }   // get method : 필드의 값을 얻고자 할때
        set                          // set method : 필드에 값을 대입하고자 할때
        {
            _firstName = value;  // value(키워드) : 내장 변수로서 프로퍼티에 할당된 실제 값을 나타냄
        }
    }
}

 

위와 같이 Family class내에 _firstName이 "gilDong"으로 초기화 되어있으며,

접근 지정자는 private으로서 클래스 외부에서는

접근이 불가하지만,

FirstName이라는 속성(property)을 정의하고,

get/set method를 정의함으로서

외부에서 간접적으로 _firstName에 접근(read,write)하는 것이

가능하다.

여기에서, 아래 표와 같이

get 혹은 set metho의 정의 여부에 따라

읽기 전용 혹은 쓰기 전용으로 Property를 만드는 것도 가능하다.

접근 가능성
구현 방법
ro/rw
get/set method를 모두 정의
ro
get method만 정의
rw
set method만 정의

이러한 필드(field)와 속성(property)을 아래 실습 예제를 통해 알아보자.

 

3.실습 예제 및 실행 결과

 

실습을 하기에 앞서 프로젝트 생성은 아래와 같이 해주었다.

Visual Studio에서 New Project를 선택 후

아래와 같이 language는 C#, Template는 Console Application

으로 한다.

 

아래 예제에서와 같이

_firstName, _lastName, _address, _familyMember등이

모두 private으로 설정되어 있어서

사실상 외부에서 접근이 불가능한 필드이지만, 각각이

FirstName, LastName, Address, FamilyMember라는 속성을 가지고 있으며,

또한 get/set method를 정의하였기 때문에

외부에서의 접근이 가능하다.

 

using System;

public class Family
{
    private string _firstName = "KilDong";    // 필드 (접근성 : private)

    public string FirstName      // 속성 (접근성 : public)
    {
        get { return _firstName; }   // get method : 필드의 값을 얻고자 할때
        set
        {                               // set method : 필드에 값을 대입하고자 할때
            _firstName = value;  // value(키워드) : 내장 변수로서 프로퍼티에 할당된 실제 값을 나타냄
        }
    }

    private string _lastName = "Kim";
    public string LastName
    {
        get { return _lastName; }
        set
        {
            _lastName = value;
        }
    }

    private int _age = 30;
    public int Age
    {
        get { return _age; }
        set
        {
            _age = value;
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        Family familyObj = new Family();
        Console.WriteLine(“Before familyObj.Age set : " + familyObj.Age);
        familyObj.Age = 20;
        Console.WriteLine(“After familyObj.Age set : " + familyObj.Age);
    }
}

 

위 코드를 실행하면,

아래와 같이 객체 familyObj는 초기에

_age가 30으로 초기화 되었다가

속성 Age를 통해 값 '20'이 write되어

'20'으로 변경되는 것을 확인할 수 있다.

여기에서 set method에 조건을 추가하여

필드에 값을 write하는 경우

특정 범위를 벗어날 때(0보다 작은 경우) 값의 입력이 안되도록

코드를 변경해 보자.

이를 위해 _age 필드의 속성 Age에 대해

set metho를 아래와 같이 수정하였다.

private int _age = 30;
public int Age
{
    get { return _age; }
    set
    {
        if (value < 0) {Console.WriteLine(“Invalid value”); }
        else _age = value;
    }
}

 

class Program
{
    static void Main(string[] args)
    {
        Family familyObj = new Family();
        Console.WriteLine("Before familyObj.Age set: " + familyObj.Age);
        familyObj.Age = -2;
        Console.WriteLine("After familyObj.Age set: " + familyObj.Age);
    }
}

 

실행 결과,

초기에 설정된 값 30이 변경되지 않고 그대로 있는 것을 확인 할 수 있다.

마찬가지로 get method에 대해서도 조건을 추가하여

필드의 값을 읽을 수 없도록 설정하는 것이 가능하다.

이를 위해 _age필드에 대한 Age속성의 get method를

아래와 같이 수정하고 실행해 보도록 하자.

 

private int _age = 30;
public int Age
{
    get
    {
        if (_age == 50) { return 0; }
        else { return _age; }
    }
    set
    {
        if (value < 0) { Console.WriteLine("Invalid value : " + value); }
        else _age = value;
    }
}

 

class Program
{
    static void Main(string[] args)
    {
        Family familyObj = new Family();
        Console.WriteLine("Before familyObj.Age set: " + familyObj.Age);
        familyObj.Age = -2;
        Console.WriteLine("After familyObj.Age set: " + familyObj.Age);

        familyObj.Age = 50;
        Console.WriteLine("After familyObj.Age set: " + familyObj.Age);
    }
}

 

실행결과,

Age를 통해 _age 필드를 50으로 set하였으나,

get method에서 조건(50일 경우 0을 리턴)에 의해

Age를 읽을 때 0으로 출력되는 것을 확인할 수 있다.

이러한 Property는 필드가 10개 이상만 되어도

코드가 매우 길어지며, 귀찮은 일이 될 것이다.

따라서, 단순히 읽고 쓰기만 하는 경우 일일이 구현할 필요 없이 자동으로

구현되게 해주는 방법도 있다.

바로 아래 소스 처럼 필드정의 시에 get과 set만 추가 해주면 된다.

 

private string –firstName { get; set; } = “초기값”;

 

 

 

 

"

마치며...

필드(field)와 속성(property)의 정의에 대해

알 수 있었고, 동작 원리에 대해 이해할 수 있었다.

"

반응형
반응형

 

이 글은 휴대용 배터리 중에
필요한 만큼 마음대로 쓰고 쓰고 또 써도
남을 정도로 용량 크고, 디자인 괜찮고,
가성비 좋은
오지렌 고속충전 대용량 보조배터리 30000mAH를
소개하려고 합니다.

 

https://link.coupang.com/a/bVubJW

 

오지렌 고속충전 대용량 보조배터리 30000mAH - 배터리 | 쿠팡

현재 별점 4.9점, 리뷰 176개를 가진 오지렌 고속충전 대용량 보조배터리 30000mAH! 지금 쿠팡에서 더 저렴하고 다양한 배터리 제품들을 확인해보세요.

www.coupang.com

 

사실 이 배터리를 구매하기 전에 

알******라는 사이트에서 워낙에 싸게 팔아서

 

거기에서 1+1을 찾아 주문을 했었는데,

일주일 넘게 기다려서

받은 제품이...

 

이건 뭐 한개는 배도 살짝 부르면서

배터리 잔량 표시도 안되는 불량 제품에다가

 

다른 한개 마저도

충전을 해보려고 꽂았더니,

분명~! 초기 충전 상태가 76% 였는데...

꽂고 1분도 지나지 않아서 10%로 떨어짐...

 

 

뭐지~???

 

뭔가 갑자기 웃음이 나와버림...

 

 

바로 1:1 문의 글 남기고, 

어찌저찌해서 반품을 요청하고

환불을 기다리는 중이었는데,

도저히 환불 받고 사기에는

이미 인내심이 바닥이었던 상태라...

 

이번에는 쿠*에서 주문을 하였다.

바로 이 제품~!!!

주문한지 이틀(?)만에 도착

ㅋㅋ

 

이 녀석, 한손에 쏙 들어오는 이 느낌도 괜찮고~ㅎㅎ

 

 

출력 포트도 4개이면서 애초에 달려있는 출력선도 3개라서

동시에 충전 가능한 포트가 많아서 맘에 들었다.

 

 

전체적인 디자인은 튼튼한 검정 스트랩에 아래 사진과 같다.

 

크기는 손바닥을 덮을 정도로 크지만

 

평균적인 남자손이라면 한손에 잡기에도 불편하지 않으며,

스트랩이 있어서

편하게 들고다니기에도 

좋은것 같다.

 

 

기본적으로 연결되어있는 충전 케이블이 있다보니

따로 충전선을 챙기지 않아도 되고,

아래 사진 처럼 빼서 충전하고

안 쓸때는 다시 끼워 두면 정리도 깔끔하게 된다.

 

3~4일 전에 택배 수령하고, 충전하지 않은 상태로 지금까지 아이들 두명의

핸드폰과 와이프 핸드폰을 수시로 충전하고 있는데,

25%정도 쓴거 같다.

쓰는 양에 따라 배터리 소비량도 달라지겠지만

 

이건 뭐 

거의 벽 전원을 옮겨가며 쓰는 느낌이랄까~

 

계속 왔다갔다 하면서 들고다니며

쓰기보다는

한번 충전 해 놓고, 

재충전 신경쓰지 않고 맘껏 편하게 쓰고 싶어하는

경향의 사람이라면 

무조건 강추하고 싶다.

 

그리고,

보통 집에서도 여기 저기

식탁이든, 소파든,

침대에서든

콘센트 꽂고 충전기에 충전선까지 

연결해서 쓰기 보다는

(연결하기 어렵고, 지저분해지고 할때)

 

이거 하나만 있으면,

벽전원(?) 대신 딱!!! 일듯.

 

(사실, 무게가 무게인지라 가방에 넣어 놓고, 휴대하기에는 좀...많이 버거울 듯)

 

https://link.coupang.com/a/bVubJW

 

오지렌 고속충전 대용량 보조배터리 30000mAH - 배터리 | 쿠팡

현재 별점 4.9점, 리뷰 176개를 가진 오지렌 고속충전 대용량 보조배터리 30000mAH! 지금 쿠팡에서 더 저렴하고 다양한 배터리 제품들을 확인해보세요.

www.coupang.com

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

 

반응형
반응형
해당 포스팅은 개인적으로 C# WPF를 공부하면서 익힌 내용을 기억에 남기기 위한 작업의 일환으로 작성된 글로서
일부 내용에 오류가 있을 수도 있으니 참고하시기 바랍니다.

 

 

특정 컨트롤,
Grid내 StackPanel 혹은 Grid내 TextBlock에서
사용 가능한 Resource 정의 방법과 적용 우선순위에 대해
알아보자.

 

 

※ 이전에 작성한 글 중 Property Trigger에 대한 포스팅에 조금 더 보충하고픈

내용이 있어서 이 글을 작성하게 되었다.

이전에 작성한 포스팅은 아래에서 확인할 수 있다.

 

https://yhshin0302.tistory.com/5

 

C# WPF에서 Property Trigger 이해하기

해당 포스팅은 개인적으로 C# WPF를 공부하면서 익힌 내용을 기억에 남기기 위한 작업의 일환으로 작성된 글로서일부 내용에 오류가 있을 수도 있으니 참고하시기 바랍니다.  우스 커서를 움직

yhshin0302.tistory.com

 

 

내용 요약

 

간략히 요약하면, IsMouseOver 의존속성을 이용하여

Property Trigger에 대해 이해한 내용을 바탕으로 작성되었는데,

 

동작 원리는

마우스 커서를 움직여서 특정 글자 위에 위치하게 되면,

해당 글자의 의존 속성이 변경되는 프로그램이었는데,

한가지 짚고 넘어갈 부분이 바로

해당 스타일이

Window.Resources에서 정의가 되어있었다는 것이다.

이는 window 내에서 공통으로 모두 사용 가능한 Resource로서

모든 컨트롤러에

공통적으로 적용하고 싶은 Property Style이라면

여기에 정의하여 쓰는 것이 맞을 것이다.

하지만, 개별적으로 적용하고 싶은 Resource가 있다면

어떻게 해야 할까?

이 포스팅은 바로 그러한 부분에 대해 다루어 볼 예정이다.

 

 

목차
1.Grid내 StackPanel에서의 Resource 정의
2.Grid내 TextBlock에서의 Resource 정의

 

특정 컨트롤 StackPanel 혹은 TextBlock내에서

독립적(개별적)으로 적용 가능한 Resource(Style)를 정의해보고

구현해보자.

비하인드 코드는 따로 작성하는 것 없이 진행해보자.

 

 

1. Grid내 StackPanel에서의 Resource정의

 

아래의 예는

기존에 <Window.Resources>에서 하던 Style에 대한 정의를

<stackPanel.Resource>에서 하고 있으며,

Button과 TextBox 대한 Style 정의를 아래와 같이 하였다.

 

Style을 적용하는 Trigger 속성은 IsMouseOver이다.

 

<Grid>
    <StackPanel>
        <StackPanel.Resources>
            <Style TargetType="{x:Type Button}">
                <Setter Property="Control.FontSize" Value="20"/>
                <Setter Property="Control.Foreground" Value="Blue"/>
                <Setter Property="Control.FontWeight" Value="Bold"/>
                <Style.Triggers>
                    <Trigger Property="Control.IsMouseOver" Value="true">
                        <Setter Property="Control.Foreground" Value="Green"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
            <Style TargetType="{x:Type TextBox}">
                <Setter Property="Control.FontSize" Value="20"/>
                <Setter Property="Control.Foreground" Value="Red"/>
                <Setter Property="Control.FontWeight" Value="Bold"/>
                <Style.Triggers>
                    <Trigger Property="Control.IsMouseOver" Value="true">
                        <Setter Property="Control.Foreground" Value="Green"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </StackPanel.Resources>
        <Button Content="Close" />
        <TextBox Text="CLose" />
    </StackPanel>
</Grid>

 

기존 <Window.Resources>에서는

우선적으로 Style에 대한 Key를 설정하고,

적용하고 싶은 컨트롤의 Style에 대한 StaticResource를

해당 Key로 적용하면 되었다.

하지만 이번의 경우는

<stackPanel>...</stackPanel>내부에 있는 모든 컨트롤에 적용되는 Style로서

Key 설정이 필요없으며,

TargetType으로 설정된 Type별로 적용되는 것이 특징이다.

마우스 포인터를 버튼위로 옮기면 아래와 같이 Close 글자의 색이 파란색에서 초록색으로

바뀌는 것을 확인할 수 있다.

아래 TextBlock에서의 글자 CLose도 마찬가지로 빨간색에서 초록색으로 바뀌는 것을 확인할 수 있다.

 

2.Grid내 TextBlock에서의 Resource정의

 

특정 Control(TextBlock)내에서도 아래와 같이 독립적인 Style을 설정해 줄 수 있다.

<TextBlock Text="숫자를 입력하세요" Margin="8,70,0,0"
               VerticalAlignment="Center" HorizontalAlignment="Center">
    <TextBlock.Style>
           <Style TargetType="TextBlock">
                <Setter Property="Foreground" Value="Green" />
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="FontSize" Value="30" />
                        <Setter Property="FontWeight" Value="Bold" />
                        <Setter Property="Foreground" Value="Red" />
                        <Setter Property="TextDecorations" Value="Underline" />
                    </Trigger>
                </Style.Triggers>
            </Style>
    </TextBlock.Style>
</TextBlock>

 

위 소스는 TextBlock에 Trigger 속성 IsMouseOver를 이용하여

마우스 포인터가 TextBlock에 위치할 경우

글자크기, 굵기, 색상, 밑줄에 대한 속성을 변경하는 코드이다.

위 코드를 기존 소스에 추가하여 실행하면, 아래와 같이 "숫자를 입력하세요"라는

문구가 초록색으로 나타나게 되며,

마우스 포인터를 위치시키면, 아래와 같이 바뀌게 된다.

해당 컨트롤(TextBlock)을 stackPanel에 붙여넣기 하더라도,

TextBlock의 자체 속성이기 때문에 stackPanel.Resources에 정의된

Style이 적용되지 않는다.

 

 

 

"

마치며...

Style의 속성은 매우 큰 범위(Window)에서 부터

가장 작은 범위라고 할 수 있는 Controls(Button, TextBlock 등)까지

정의 할 수 있으며,

이때 가장 작은 범위(Control)의 Style 우선순위가

가장 높아 먼저 적용이 되며,

정의가 되어있지 않은 경우 

점점 넓은 범위의 Style을 

적용하게 된다는 것을 알 수 있었다.

"

반응형

+ Recent posts