반응형

C# 49

[WPF] ContextMenu Binding in TreeView

TreeView에 있는 데이터를 탐색기처럼 사용할 떄, 각 Item들을 오른쪽 버튼을 눌러 어떠한 작업을 할때가 있다. 이때 보통 ContextMenu를 사용하는데 Command와 CommandParameter를 사용해야하는데 일반적인 방법으론 잘 되지 않는다. 그래서 사용하는 방법이 Tag에 해당 최상위 컨트롤의 DataContext를 바인딩하고, MenuItem에서 Tag를 통해 가지고 오는 방법을 사용한다. 이때 CommandParameter는 오른쪽으로 선택된 아이템이 따라온다.

프로그래밍/WPF 2022.11.28

[WPF] 외부 Font 적용하기 - Roboto

기본 폰트만 사용하다 외부 폰트를 사용해야할 때가 있다. 무료 폰트인 Roboto 폰트를 예를 들어보겠다. 일단 Roboto 폰트를 Google에서 다운받는다. 다운받은 Font를 프로젝트에 아래와 같이 넣는다. App.xaml 을 연다. 아래와 같이 추가해준다. applicaton:,,,/Fonts/#Roboto applicaton:,,,/Fonts/#Roboto Black applicaton:,,,/Fonts/#Roboto Condensed applicaton:,,,/Fonts/#Roboto Condensed Light applicaton:,,,/Fonts/#Roboto Light applicaton:,,,/Fonts/#Roboto Medium applicaton:,,,/Fonts/#Roboto Th..

프로그래밍/WPF 2022.09.08

[WPF] ListView 또는 ListBox 에서 ScrollIntoView 사용법

Behavior 클래스를 먼저 작성한다. public static class ScrollToSelectedBehavior { public static readonly DependencyProperty SelectedValueProperty = DependencyProperty.RegisterAttached( "SelectedValue", typeof(object), typeof(ScrollToSelectedBehavior), new PropertyMetadata(null, OnSelectedValueChange)); public static void SetSelectedValue(DependencyObject source, object value) { source.SetValue(SelectedValue..

프로그래밍/WPF 2022.04.15

[C#] Oracle Bulk Insert

public class TableA { public string A { get; set; } public string B { get; set; } public string C { get; set; } } 만약 위와 같은 테이블 레이아웃을 가지는 Bulk data 가 있다고 하자. 만약 한 두건 정도면 쿼리로 넘기면 되지만 만건 10만건 정도 되는 데이터를 넘길때는 OracleParameter와 ArrayBindCount를 이용하여 한꺼번에 보낸다. 아래의 코드는 1000건씩 Insert하는 코드를 첨부하였다. public async Task BulkInsert(List result) { using (OracleConnection conn = new OracleConnection(_connectInfo))..

프로그래밍/C# 2022.04.01

[C#] Newtonsoft JsonConverter 사용하기

C# 개발자에겐 거의 필수적으로 사용되는 Newtonsoft.json은 Json data를 직렬화 및 역직렬화를 제공하는 강력한 오픈 소스다. 이번은 JsonConverter에 대해 설명을 해보고자 한다. 직렬화와 역직렬화를 사용할 때, 받은 데이터를 혹은 내보내는 데이터를 다른 형태로 바꿀 일이 종종 생긴다. 그럼 굳이 받은 데이터를 하나하나 얻어서 새로운 객체를 만드는 코드를 집어 넣지 않고, 아래와 같이 JsonConverter를 사용하여 바로 처리 가능하다. [JsonConverter(typeof(TestConverter))] public class ClassA { public double A1 { get; set; } public double A2 { get; set; } public doubl..

프로그래밍/C# 2022.03.30

[WPF] Combobox AutoComplete 기능 구현

WPF에서 AutoComplete 기능을 사용하는 방법에 대해 알아본다. 위의 그림처럼 Combobox에 텍스트를 입력하면 필터링처리 된 결과만 보여주게 된다. private List _sourceItemList; private List _itemList; public List ItemList { get { return _itemList; } set { SetProperty(ref _itemList, value); } } private bool _comboBoxDropDown; public bool ComboBoxDropDown { get { return _comboBoxDropDown; } set { SetProperty(ref _comboBoxDropDown, value); } } private st..

프로그래밍/WPF 2022.03.30

[WPF] Storyboard 이용하여 Visibility 제어

Open Button과 Close Button이 각자 누를 때마다 서로 반전되어 화면에 보이는 상황이 있다고 하자. 만약 MVVM 패턴에서 이를 제어하려고 한다면 Command를 Binding 하여 특정 변수를 Visivility에 바인딩하여 제어해야 할 것이다. 심지어 Converter를 작성해야한다. 굳이 그럴 필요 없이 Storyboard와 Event Trigger를 이용하여 이를 아래와 같이 제어 할 수 있다. Event Trigger를 등록할 버튼에 이름을 지정해준다. Event Trigger에 등록한 버튼 이름과 트리거에 물릴 이벤트를 연결한다. 트리거가 발생될 때 사용될 Storyboard를 작성한다.

프로그래밍/WPF 2022.03.30

[C#] Oracle 연결 시 예외 발생 문제

C#에서 Oracle을 연결해서 사용하는데 정상적으로 접속은 하지만 예외가 아래와 같이 나올 때가 있다. 예외 발생: 'OracleInternal.NotificationServices.ONSException'(Oracle.ManagedDataAccess.dll) 왜인지는 모르겠지만 접속 정보에 load balancing=false; ha events=false; 을 추가해주면 문제가 해결된다. var dbInfo = $"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={dbIp})(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={dbName})));load balancing=..

프로그래밍/C# 2022.03.11
반응형