본문 바로가기

c#

(30)
ASP.Net Core MVC Entity Frame work 사용하기 -1 Entity FrameWork 는 Microsoft 에서 제공하는 ORM 프레임 워크 입니다. ORM을 사용하면 따로 Ado.Net 처럼 쿼리를 작성 하지 않아도 데이터를 처리 할 수 있습니다. 따라서 개발자가 쿼리작성보다 개발에 더 집중 할 수 있습니다. 다만 속도가 느리고 마이그레이션이 잘 안되는 경우가 있습니다. entity framework 의 접근방법 구분 entity framework에서 의 접근방법은 3가지로 구분 되어 있는데 DB Frist, Code First, Model First가 있습니다. DB First 는 db를 먼제 생성하고 접근하는 방법이며 Code First는 코드에서 모델을 먼저 작성해서 접근하는 방법 Model Frist는 Visual Studio에서의 Entity Da..
C# visual studio 파일을 여는 중 무한 로딩 해결 방법 c# 솔루션 오픈 중 visual studio2017 환경에서 파일을 여는 중 화면에 무한 로딩이 걸렸습니다. 오루를 잡기위해 재부팅도 해보고 해당 솔루션의 .sln파일을 읽기 속성으로도 변경해보고 여러가지를 해봤으나 아래와 같이 파일을 여는 중... 이라는 문구가 무한으로 로딩되면서 솔루션이 실행되지 않는 오류가 있었습니다. 위의 해결 방법은 생각보다 간단 했습니다. 1.visual studio2017의 설치경로에 간다 (저는 아래와 같은 경로에 설치 해두었습니다.) C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE 2.devenv.exe를 관리자 권한으로 실행한다. 3.중앙부의 열기 항목의 프로젝트/솔루션 열기를 ..
WPF Gird panel 사용법 wpf에선 Layout 객체에 Canvas, StackPanel, WrapPanel, Grid 등이 있습니다. 그중 Grid 컨트롤에 관해 알아보겠습니다. 1.Grid.RowDefinitions Grid의 Row에대한 개수, 높이, 넓이등 로우값에 대한 세팅하는 태그입니다. RowDefinitnions태그 하나당 하나의 Row가 증가하는 속성을 가졌습니다. 2.ColumnDefinitions Grid의 Column에 대한 개수, 높이, 넓이등 컬럼 값에 대한 세팅을 하는 태그입니다. 마찬가지로 ColumnDefinitions 하나당 하나의 Column이 증가하는 속성을 가졌습니다. 3.Grid.Column Grid 컨트롤안에 Definitions를 지정한 만큼의 컬럼이 생기는데 해당 위치의 인덱스를 지정..
WPF DataTemplate과 ControlTemplate ItemsPanelTemplate 1.DataTemplate: DataTemplate은 데이터 개체의 시각적 표현을 정의하는 데 사용되는 템플릿입니다.목록이나 그리드에 항목 모음을 표시하는 것과 같이 특정 형식으로 데이터를 표시하는 데 사용됩니다. DataTemplate은 일반적으로 ListBox 또는 ListView와 같은 ItemsControl과 함께 사용되어 컨트롤의 각 항목 모양을 정의합니다. 2.ControlTemplate: ControlTemplate은 컨트롤의 모양과 동작을 정의하는 데 사용됩니다. 레이아웃, 테두리, 배경 및 기타 시각적 요소와 같은 컨트롤의 구조 및 시각적 모양을 정의합니다. ControlTemplate은 Button 또는 CheckBox와 같이 Control에서 파생되는 컨트롤과 함께 사용됩니다. 3.I..
WPF static Resource 와 dynamic Resource의 차이점 리소스를 설정해줍니다. 리소스 설정 wpf 의 리소스는 객체에 대한 값을 지정하여 재사용, 사용하기 위해서 사용합니다. 1.Static Resource 컴파일 타임에 로드됩니다. 처음 참조해 설정한 값이 변경 될일이 없는 경우 사용합니다. StaticResource를 통해 정적으로 등록합니다. 2.Dynamic Resource 런타임에 로드됩니다. 변경이 일어날때 사용합니다. 참조된 리소스가 즉시 사용 되지 않을 경우 사용합니다. 리소스가 변경될 때마다 다시 참조하여 가져오기 때문에 정적 리소스보다 성능의 저하가 있을 수 있습니다. DynamicResource를 통해 동적으로 등록합니다. 아래 코드를 추가하여 동적리소스에 해당 설정 정보가 바인딩 되게 해줍니다. 동적리소스 변경 로직 RadialGradi..
c# WPF Behavior Grid click event mvvm패턴으로 만드는 법 wpf에서 Mvvm패턴을 지키면서 Grid에 클릭하는 방법입니다. 기존의 Grid는 Click 이벤트를 실행 할 수 없으나 Behavior를 사용하면 Grid에서도 클릭이벤트 사용이 가능합니다. 1.NuGet에서 Behaviors를 다운 받습니다. 2.xaml파일에 해당 문구를 넣어줍니다. xmlns:i="http://schemas.microsoft.com/xaml/behaviors" 3.ViewModel 클래스에 Behavior 클래스를 상속합니다. Behavior 이처럼 지정할 컨트롤 클래스를 명시해줍니다. internal class GridBehavior : Behavior 4. OnAttached(),OnDetaching()를 구현합니다. OnAttached를 통해 연결된 컨트롤 객체와 이벤트를 ..
C# wpf Dispatcher DispatcherObjcet사용법 및 정의 WPF의 모든 UI관련 작업은 Main Thread가 수행합니다. 처음 시작할 때 있는 [STAThread]어트리뷰트가 위 내용에 해당 합니다. 여기서 STA 란 하나의 객체는 하나의 Thread에서만 엑세스할수 있도록하는 규칙과 제한입니다. 이때 WPF의 메인 Thread는 직접적으로 다른 Thread에 간섭을 받을수 없습니다. 즉 한 Thread에 생성된 컨트롤들은 그 Thread에서만 값을 변경 할 수 있습니다 해당 ui에 대한 쓰레드를 관리하는게 Dispatcher라는 큐 관리자이며 만약 해당 Dispatcher의 작업이 종료 되지 않았는데 ui를 변경하거나 조작하려 하면 에러가 발생하게 됩니다. 이를 방지하기 위해 사용하는것이 Dispatcher,DispatcherObject입니다. Dispat..
c# image to byte 이미지 바이트로 전환, 이미지 압축 하는 법 이미지를 바이트로 전환하여 압축하는 방법입니다. EncoderParameter클래스를 사용하여 압축의 퀄리티를 지정 할 수 있습니다. 0L과 가까울수록 이미지가 더 압축되어 깨짐현상이 있을 수 있습니다. 아래는 이미지를 선택하여 압축을 한 복사본을 만드는 예제 코드입니다. public FrmImagecs() { InitializeComponent(); OpenFileDialog dlg = new OpenFileDialog(); if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { dlg.Filter = "jpg files (*.jpg)|*.jpg|jpeg files (*.jpeg)|*.jpeg|bmp files (*.bmp)|*.bmp|gif ..
c# 보조 키 이벤트 , 컨트롤 키 추가 이벤트 넣는 법 C# 이벤트를 만들다 보면 ctrl+마우스클릭 , Alt+드래그 등 보조키를 넣어야하는 이벤트가 필요한 경우가 있습니다. 이를 넣는 방법은 매우 간단합니다. 바로 아래와 같은 ModifierKeys를 사용하면됩니다. System.Windows.Forms.Control.ModifierKeys 예제 코드를 보겠습니다. //xaml public partial class Window2 : Window { public Window2() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { // ModifierKeys를 통한 보조키 이벤트 활용 if (System.Windows.Forms.Control.Modi..
wpf MVVM Commandparameter 여러 개 파라미터 받기 wpf의 MVVM패턴 사용시 commandparameter의 값을 여러개를 받을때 사용 할 수 있는 코드입니다. -소스는 저번에 사용한 ICommand활성화 비활성화를 가져다 썻습니다. 1.컨버터 코드 생성 //컨버터 class Converter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { return values.Clone(); } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new ..