017. ViewBox
·
사소한 아이의 소소한 스킬/C#
이번엔 ViewBox다. 이건 진짜진짜 별게없다...... 단순히 Image를 보여주는 정도... Image를 쓰는것과 차이가 없으나... 끽하면 Stretch정도일까? 아니 Image도 Stretch가 있던걸로 기억하는데...?? 아무튼.... 코드를 확인해보자.. 1 2 3 4 5 cs 이게 끝이다.... 이리 보이고.... Width, Height에 따라서 크기가 잘 Stretch 될 것이다... 간....단...!!!
014. LINQ Query Operators
·
사소한 아이의 소소한 스킬/C#
LINQ는 사용을 해봤고.. 그렇다면.. LINQ문은 Where 문, select문만 존재하는것인가? 아니다.. 종류는 이렇게 많다 Operator Category LINQ Query Operators Names Filtering Where, OfType Sorting OrderBy, OrderByDescending, ThenBy, ThenByDescending Set Except, Intersect, Union, Distinct Quantifier All, Any, Contains Projection Select, SelectMany Partitioning Skip, SkipWhile, Take, TakeWhile Join Join, GroupJoin Grouping GroupBy, ToLookup S..
013. LINQ Query/Method Syntax
·
사소한 아이의 소소한 스킬/C#
이번엔 LINQ다.. Query Syntax는 Query문을 수행해주는 것이라 생각하면 속편하다. (DB의 Query를 생각해주자) 바로 코드.. 이건 xaml 1 2 3 4 5 6 7 8 9 10 11 12 13 Colored by Color Scripter cs 이건 Code-Behind 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ..
016. Window - UserControl 간 파라미터 전달
·
사소한 아이의 소소한 스킬/C#
이번엔 컴포넌트가 아닌 UI단위의 기술을 이야기해보자. WPF로 시작하면.... MainWindow가 기본으로 생긴다. 여기서 MainWindow내부에 UserControl을 만든다고 생각한다면 이런식으로..... 만약 이렇다면... MainWindow에서 UserControl로 변수를 넘기는 방법은 무엇이 있을까? 만약 반대의 경우라면? 또 각각의 경우에 따라 변수가 다같이 동기화가 되야 한다면?? 복잡.. 그 자체....... 그냥 간단히 생각해보자 각각 MainWindow의 특정 변수가 있고... UserControl에도 특정 변수를 만들어서.. 2개를 항상 동일하게 변경해준다면... 이런 경우 문제가 발생될 일이 없을 것으로 생각된다.... 그러취? 이렇게 값이 변경될때 신경안쓰고 데이터가 동기화..
015. Endian(엔디안)
·
사소한 아이의 소소한 스킬/C#
이번엔 엔디안에 대해 써보고자 한다.. 엔디안이란 데이터를 메모리에 넣는 순서를 정하는거라고 생각하면 될 것 같다. (내맘대로 생각...) (https://ko.wikipedia.org/wiki/%EC%97%94%EB%94%94%EC%96%B8) 나무위키도 함 봐보자! 그러면 이러한 엔디안은 어떠한 것들이 있는가? 단 2가지 뿐이다. Big-Endian(빅엔디안), Little-Endian(리틀엔디안) 그렇다면 빅엔디안과 리틀엔디안의 차이는 무엇인가? 아까 말했듯 데이터에 넣는 순서가 다르다는 것.. 예시로 확인해보자. Int32 Type의 TEMP_INT 라는 변수가 있다고 생각해보자. 1 int TEMP_INT = 123456789 cs 이렇게 변수가 있다면... 이 변수는 과연 4바이트 메모리에 어..
012. Tab Control - TabStripPlacement
·
사소한 아이의 소소한 스킬/C#
탭컨트롤이다.. 뭐 별거없는 탭컨트롤... 그냥 크롬의 탭을 생각해도되고... 오피스의 탭을 생각해도 되고... TabStripPlacement는 단순히 탭을 어느위치에 둘것인지 이다. 왼쪽/오른쪽/위/아래 4가지가 존재... 이건 굳이 코드까지 적힐필요도 없지만......... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 Colored by Color Scripter cs 뭐 없다.... 코드도 제외!
011. ListBox
·
사소한 아이의 소소한 스킬/C#
11번째다.... 이번엔 ListBox... Listbox는 그냥 말 그대로 List 정보.. DataGrid와는 살짝 다른.... DataGrid를 가장 많이 쓰지만... 일반 Listbox도 알고는 가야지.... Listbox에 텍스트를 주로 넣지만... 난 그냥 Rectangle을 넣어봤다.. 코드 바로 궈궈 간단히 설명하자면... DataBinding을 위해 DataContext에 ViewModel을 연결해주고.. ListBox 선언 후 LS라는 Property와 ItemSource를 연결.! 그러면 끝 버튼 누를시에는 이렇게 ViewModel 접근해서 LS 프로퍼티에 데이터를 넣어준다. 그러면 디 엔딩 (기본적인 DataContext 생성방법등은 2021.10.21 - [사소한 아이의 소소한 스..
010. Grid
·
사소한 아이의 소소한 스킬/C#
그냥 생각나는 컴포넌트들을 다 작성하고 있다... 그래서....좀..순서가 뒤죽박죽....하지만 뭐...내가 남겨두려하는거니까..!! 검색해서 보면되고!!! 그리하여 이번엔 Grid.. Grid가 참..잘쓰면 좋고....나쁘게 쓰면 안좋고.... 처음에 UI를 잡을때 잘 고려해야 한다. 만약 위와 같은 화면을 레이아웃 잡는다고 하면? 또한 위 화면 사이즈를 조절했을때 가운데 파란화면만 가로가 늘어난다면?? 이러한 부분들을 잘 고려해서 Grid를 생각한다면.... 정말 좋은 UI Layout이 될 것이다.. 물론 여기에 StackPanel 등을 또 섞어서 넣으면 금상첨화! 만약 내가 저런 UI Layout을 만든다면 이렇게 짤듯.. 이건 정말 간단한 Layout이니깐...금방...후딱후딱... 하지만.....
009. WaterMark TextBox
·
사소한 아이의 소소한 스킬/C#
간단한 WaterMark TextBox를 만들어볼까한다. 유니티를 쓰면 기본적인 InputBox에 DefaultText를 입력하여서 Watermark를 만들필요가없지만... C#은 그런거없지.. 코드작성 고고 난 일단 워터마크를 이미지로 박을 예정이기에... 간단한 Textbox를 만들고..백그라운드로 티스토리 로고를 하나 박아준다. 티스토리 로고는 프로젝트에 추가해주어야 하며, 속성을 아래와 같이 해주어야 한다. 그리고 Behind 코드는 이렇게 Text의 내용이 있을때와 없을때를 구분지어 백그라운드를 보여줄지 말지로 해준다. 그리하면 텍스트 입력 전 텍스트 입력 중 이리된다. 만약에 이미지를 사용하지 않는다면.. 이미지 사용관련된 코드는 지우고... Behind 코드에서 Text가 Null이거나 빈칸..
008. StackPanel
·
사소한 아이의 소소한 스킬/C#
이번엔 요새 정말 많이 쓰는거같은 StackaPanel... StackPanel이란 말그대로 계속 Stack을 해주는 Control이라고 생각하면된다. UI를 구성할때 UI의 사이즈가 변경 될 시 UI 위치를 어떻게 배치할것인지 항상 고민이 된다. 이럴때 StackPanel을 사용하면 참 편하다. 특정 위치에 Grid를 배치한 후 StackPanel을 생성하여 여러 Control을 배치하면.. 알아서 순서대로 넣어주므로 margin값을 넣어주지 않아도 알아서 배치가 딱딱되는 것!!! 사용법은 아래와 같이 사용하면 된다. 이렇게 넣어주면 알아서 자동으로 TextBlock과 Button이 차곡차곡 쌓인다 아래처럼. 만약 세로로 쌓는게 아니라 가로로 쌓으려면 StackPanel의 Orientation 정보를 ..
007. Menu
·
사소한 아이의 소소한 스킬/C#
7번째는 Menu... 뭐..간단한... Menu..... 보통 모든 Application의 경우 모두 Menu가 있다... 파일탐색기에도 있고..... 이러한 Menu는 코드로 어떻게 작성하면 되는 것인가? 아래와 같다. 이렇게 적으면 화면은 요롷게 만들어진다. 그렇다면... 만든 메뉴를 선택하면 특정 이벤트가 발생되도록 하려면..? 이렇게 xaml에서 클릭하는 menu에 따라 입력해주면된다. 그리고 Code-Behind에서 특정 행위를 코딩하면된다.. 또한 메뉴에서 Check 버튼이 보이게 하려면?? 이렇게 IsCheckable 변수값이 존재한다. 이렇게 Check값이 보여진다.. 이상!!
006. ValueConverter
·
사소한 아이의 소소한 스킬/C#
6번째... ValueConverter이다. ValueConverter 또한 DataBinding시 사용되는 기술로써.. 어렵게 생각할 필요 없이... 그냥 ValueType을 변경해주는 중간 다리 역할이라고 생각하면 된다. 지난번 DataBinding시의 이미지를 보면 이렇게 중간에 ValueConverter가 들어간다. 그렇다면 어떠한 중간다리 역할을 하는것인가... 예를 들어 UI를 Visible할 시 Visible하거나 Collapsed 하려할 시 Visibility Type의 데이터를 가져와서 데이터를 입력해주어야 한다. 그런데 Visibility Type을 가져와서 값을 설정해주는 것이 아니라 bool Type의 true, false를 가지고 입력해준다면? 이럴때 사용되는 것이 ValueCon..
005. MVVM Util
·
사소한 아이의 소소한 스킬/C#
Data Binding을 말하면서 MVVM 패턴을 이야기하였다. Model - View - ViewModel ( MVVM ) 의 연동 Model이야 기본 Class를 선언하면 되지만.. ViewModel에서는 프로퍼티로 선언해주고 해당 프로퍼티가 변경되었을 시 PropertyChange라는 함수를 선언및 생성 해주어서 View로 데이터 변경을 알려주고, Model로 데이터 변경을 알려주어야 한다고 하였다. 모르겠다면... ( 2021.10.21 - [사소한 아이의 소소한 스킬/C#] - 003. DataBinding ) 근데 이러한 방법들을 매번 INotifyPropertyChange Interface를 상속받아서 해야하는가? 아니다. 너무나도 잘 되어있는 MVVM Libary들이 인터넷에 떠돈다. 그중..
004. DataBinding
·
사소한 아이의 소소한 스킬/C#
WPF에서 가장 많이 사용되는 기술이라고 생각된다 UI와 Code를 쉽게 연결해주는 방법!! DataBinding!!! 정말 간단히 말해서 DataBinding이란.. 변수의 값을 변경만 하면 알아서 UI에 변경된 값이 표출되고. UI에서 값을 변경하면 해당 변수값이 자동으로 변경되는 기능!! 변수값을 수정했다고 따로 UI처리를 해주지 않고, UI에서 수정했다고 따로 변수값을 처리해주지 않아도 된다는 편리함이 있다!!! 이미지로 표출하자면 위와 같다!! (ValueConverter는 다음 포스팅에서..... 현재는 신경쓰지 않아도 되는 부분...) (또한 DataBinding을 위해서는 MVVM 패턴을 적용시켜야 하는데 해당 포스팅도 다음에.... 일단은 무조건 따라하기 식....) DataBinding..
001. Thread Safe
·
사소한 아이의 소소한 스킬/C#
기술 포스팅을 열심히 해보고자... 노트북도 집으로 가져왔다... 그리하여 첫번째..... Thread Safe먼저 간단하게 해보자...... Thread Safe란 Multi-Thread 시 데이터를 동시에 접근할수 없도록 하는 기술.? 기능? 이다. 아무튼.. Thread Safe를 하는 방법은 여러가지.. Lock을 걸수도 있고 Monitor.enter, Monitor.exit를 사용해도 되고.. 그중에 간단하게 Task, Await 기능을 이용하여 Thread Safe한 기술을 해보고자 한다 (비동기기능으로써 해당 작업이 종료될때까지 대기타도록 하는 기능) (Thread Safe라는것이 비동기와 동일하다고 생각해도 될 것 같다. 결국 Lock, Monitor 기능도 해당 Object를 누군가가 사..
Dictionary 정렬방법
·
사소한 아이의 소소한 스킬/C#
오랜만에 글을 남겨봅니다.............. 개발중에 보면 가끔 정렬이 필요할때가 있고... 정렬에 대해 검색해보면... List등 Dictionary든 OrderBy, Sort 기능을 이용해서 key나 value등으로 정렬을 한다. 예를 들면 아래와 같은 코드를 이용.. /// Dictionary dic = dic.orderBy( x=> x.Value).Todictinary( x=> x.Key, x=> x.Value) /// List list.Sort(); 위와 같은 경우도 쉽게 정렬이 가능한 경우.. 하지만 Dictionary의 경우 더 쉽게도 가능하다... 애초에 정의할때부터 소트되는 Dictionary로 정의해버리는 것.. A_TEST의 경우 일반 Dictionary이다. 값이 들어간 것을 ..
WPF에서 Office가 깔려있는지 확인하는 코드
·
사소한 아이의 소소한 스킬/C#
오랜만에 또 기술포스팅...... WPF에서 엑셀로 저장하는 기능을 많이 쓴다.. 물론 다른 컴포넌트( Infragistics 같은) 툴을 사용해서 Office의 Interop를 사용하는 일은 많지 않지만........ 다른 컴포넌트들이 Interop의 모든 기능을 구현해주진 않으므로..(다른 컴포넌트는 Interop가 구현하지않은 더 많은 기능을 구현해주지만..) Interop를 아예 안쓸순없다.. Office는 대부분 모든 PC에 깔려있지만...또 그게 그렇지많은 않기에..... Inteop를 수행하기 위해서 Office가 깔려있는지 확인이 필요하다.. 확인 코드는 아래와 같이.... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 string REGISTRY_EXCEL_KEY = @..
WPF BoolToVisibilityConverter
·
사소한 아이의 소소한 스킬/C#
음.... 이번엔 간단한 Converter Class... XAML에서 자주쓰이는 Converter중 하나다.... 코드는 아래... namespace nameofConverter { [ValueConversion(typeof(bool), typeof(Visibility))] public class BoolConverter : IValueConverter { enum Parameters { Normal, Inverted } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var boolValue = (bool)value; var direction = (Parameters)Enum.Par..
DLL 관리하기!
·
사소한 아이의 소소한 스킬/C#
또 오랜만에 기술 포스팅. 현재 나는 Infragistics라는 Lib를 주로 사용하고있다... 근데 뭐 이런 Lib를 사용하면 항상 걸리는게... 이 Lib가 설치가 되어있으면 상관없는데....설치안되었을때의 문제.... 당연히 설치가 안되어있으면... 프로그램이 안돌아간다........ 그래서 항상 Visual Studio에서 Local Copy를 true로 설정해준다..... 그래도.. 중간중간 빠지는 DLL은 존재하기 마련...... 이것은 그럴때 사용할 수 있는 기능인것이다!! WPF를 기준으로 설명하자면... WPF 프로젝트 생성 시 app.config가 생성됨을 확인 할 수 있을 것이다. 해당 app.config에 아래와 같은 코드를 삽입! 위 코드를 설명하자면 실행되는 .exe파일의 위치에..