.NET(9)
-
Stream, FileStream, BufferedStream, MemoryStream
Stream이란? 프로그램을 개발하다보면 Stream을 사용하는 일이 많습니다. Java와 .NET 에서는 입풀력 작업을 Stream이란 개념을 통해서 추상화하여 사용합니다. 대표적으로 파일을 읽고 쓸 때 많이 사용하는데, 자세히 알아보도록 하겠습니다. 먼저 사전적인 의미를 보자면 아래와 같습니다. A stream is a small narrow river. A stream of smoke, air, or liquid is a narrow moving mass of it. A stream of vehicles or people is a long moving line of them. (액체 등의) 좁은 흐름 우리 말로하면 작은 시냇물 같은 의미를 가지고 있습니다. 즉, 프로그램에서 Stream이란 데이터가..
2023.04.25 -
DataGrid ColumnItem의 버튼으로 해당 행 삭제
개요 이 포스트는 WPF-MVVM에서 DataGrid의 행들이 각각 버튼을 가지고 있고 그 버튼을 클릭 했을 때 해당 행이 삭제되는 예제입니다. WPF 프로젝트 생성 MVVM 패턴으로 하기 때문에 아래와 같이 파일을 생성합니다. 파일명 설명 DelegateCommand ICommand의 구현체이며 Button의 Click 바인딩으로 사용합니다. Item DataGrid에 들어가는 데이터 입니다. PropertyChangeHelper INotifyPropertyChanged 구현체로 바인딩 객체의 변화에 대해 이벤트를 발생하여 UI를 갱신합니다. MainWindow.xaml DataTemplate은 데이터의 틀을 지정해주는 Template입니다. DataGrid에서 View라는 Column을 따로 Temp..
2023.04.23 -
WPF Binding의 RelativeSource 속성
소개 WPF에서 Binding의 태그 중 RelativeSource 속성은 바인딩 할 객체를 찾을 때 사용됩니다. 자기 자신 자기 자신이 바인딩 소스인 경우 self로 자정하고 Path로 어떤 것을 바인딩 할 지 지정하면 됩니다. 상위 객체 자신의 부모 객체의 경우 감싸고 있는 Control의 이름을 AncestorType로 지정해주면 됩니다. 하지만 StackPanel이 StackPanel로 감싸고 있을 경우는 어떻게 할까요?? 위와 같을 때는 AncenstorLevel=2처럼 몇번 째 부모 Control인지 지정해주면 됩니다. ControlTemplate 정의 엘리먼트 일 경우 x:Name으로 Control 찾기 위와 같이 상대 경로로 찾지 않고 ElementName으로 바로 찾을 수 있습니다.
2023.04.23