본문 바로가기

C#/C# WPF30

Path M : Move To L : Line To C : Cubic Bezier Curve- 4개의 포인트 필요- 현재 위치가 시작점- 현재 위치(30,20) 에서 (70,20) 까지 (50,0) 과 (70,20) 의 영향을 받는(해당 포인트를 꼭 통과하지는 않음)  곡선을 그린다. Z : Close Path 2024. 5. 18.
WPF 종료 모드 WPF application 이 종료되는 속성을 지정할 수 있다. App.xaml Startup="Application_Startup" 프로그램은 Shutdown 메서드 호출에 의해서만 실행이 중지됩니다. Shut down 은 ShutdownMode 속성의 지정값에 따라 암시적 또는 명시적으로 발생한다. 1. OnLastWindowClose 기본값 마지막 창을 닫거나 Shutdown()을 호출하면 애플리케이션이 종료된다. 2. OnMainWindowClose 메인 창을 닫거나 Shutdown()을 호출하면 애플리케이션이 종료된다. 3. OnExplicitShutdown Shutdown()을 호출하면 애플리케이션이 종료된다. 2024. 1. 9.
명령줄 인수 1. 프로젝트 속성 설정 WPF 프로그램 시작시 명령줄 인수 전달 프로젝트 속성 - 디버그 - 일반 - 디버그 시작 프로필 UI 열기 - 명령줄 인수 2. Source code 에서 argument 확인 string[] args = Environment.GetCommandLineArgs(); // args[0] 2023. 12. 23.
WPF ListBox drag selection 보호되어 있는 글 입니다. 2023. 11. 6.
View 에서 디자인 타임시 ViewMode Property 자동완성 연동 MainView.xaml xmlns:vm="clr-namespace:MVVM_Sample.ViewModels" d:DataContext="{d:DesignInstance Type={x:Type vm:MainViewModel}}" 2023. 6. 11.
Button click parameter (code behind) Tag 이용 "Button_Click" 함수에 "Click_Parameter" 문자열이 전달된다. Initiate private void Button_Click(object sender, RoutedEventArgs e) { var para = ((Button)sender).Tag; // Do something with para } 2023. 6. 1.
Xaml 특수문자 특수문자 Xaml Code 설명 \n Newline \t Tab & & Ampersand > Greater-than sign (Angle Bracket) " " Quotation mark ' ' Apostrophe " " Space 2023. 6. 1.
Close Window in ViewModel MVVM 패턴에서 ViewModel 이 Window 를 직접 접근하는 것은 권장하지 않는다. 방법 1. Application.Current.MainWindow.Close() 방법 2. ViewModel Code public class ViewModel { public Action CloseAction { get; set; } private void CloseCommandFunction() { CloseAction(); } } View Code(XAML) public partial class DialogWindow : Window { public DialogWindow() { ViewModel vm = new ViewModel(); this.DataContext = vm; vm.CloseAction = n.. 2022. 10. 23.
Trigger Trigger 는 setter property 가 특정 조건에 의해 변경되었을때와 같은 특정 행동의 반응이다. Trigger 는 style 의 한 부분으로 적용되며, 스타일에서 setter 의 property 는 정적인 반면, trigger 의 property 는 조건에 따라 변경된다. Trigger 의 조건이 false 일때, trigger 안에서 설정한 값들은 기본값으로 돌아간다. Trigger 는 control 의 외형이나 animation 의 동적 변경등에 사용된다. Trigger 는 내부적으로 Dependency Properties 개념을 사용한다. 2022. 10. 23.
이벤트 라우팅(Event Routing) Event Routing 어떤 이벤트가 컨트롤의 하위 또는 상위로 전달되는 것 1. Bubbling event WPF 기본 이벤트 자기자신에서 이벤트가 발생하고 해당 이벤트가 부모로 전달 2. Tunneling event : 최상위 부모 이벤트로부터 자기자신까지 이벤트가 진행 이벤트가 자식 요소에게 전달되기전 부모의 이벤트가 먼저 발생 함 접두사로 preview 를 사용 3. Direct event 하나의 엘리멘트에서만 발생 이벤트 핸들러 메소드는 RoutedEventArgs 매개변수를 가지는데 Source 속성을 통해 실제 이벤트를 발생시킨 요소에 대한 참조를 제공한다. CommonClickHandler(object sender, RoutedEventArgs e) object sender : 이벤트를 .. 2022. 9. 30.
UserControl WindowStyle UserControl 에 WindowStyle 적용 ... 2022. 9. 27.
Style 사용 A : Style 이 있는 프로젝트 B : A에 있는 Style 을 사용할 프로젝트 A 에 리소스 사전 추가 ButtonDictionary.xaml 추가된 상태 B 의 App.xaml 에서 리소스 파일을 연결한다. B 의 xaml 파일에 Style 을 적용한다. 2022. 9. 17.
PrismMVVMLibrary Microsoft.Practices.Prism Microsoft.Practices.ServiceLocation Microsoft.Practices.Unity Visual Studio - 도구 - NuGet 패키지 관리자 - 솔루션용 NuGet 패키지 관리... Prism.Desktop.Net40 2022. 9. 12.
Button 비활성화 상태에서 클릭 처리 버튼이 IsEnabled="False" 상태일때도 버튼 클릭 처리가 필요한 경우 트릭을 이용해서 아래와 같이 처리한다. 기존 버튼을 상속 받아 새로운 버튼을 만든다. IsDefault 속성이 false 인경우 비활성화 버튼처럼 표시하도록 한다. 버튼을 사용하는 코드에서 IsEnabled 속성 대신에 IsDefault 를 사용한다. 2022. 8. 20.
Progress with Async/Await MainWindow.xaml MainWindow.xaml.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Window.. 2022. 8. 15.
View - ViewModel 바인딩 이름 App.xaml.cs 파일에 내용 추가 protected override void ConfigureViewModelLocator() { base.ConfigureViewModelLocator(); ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver((viewType) => { var prefix = viewType.FullName.Replace(".Views", ".ViewModels"); var viewAssemblyName = viewType.GetTypeInfo().Assembly.FullName; var viewModelName = $"{prefix}_ViewModel, {viewAssemblyName}"; return Type.. 2022. 8. 15.
Prism Template Pack Prism Template 적용 확장 - 확장 관리 "prism" 검색 Prism Template Pack 설치 열려 있는 Visual Studio 종료 Visual Studio 새 프로젝트 만들기 Prism 프로젝트 선택 2022. 8. 15.
Timer using MCP_Starter.Models; using Prism.Commands; using Prism.Mvvm; using System; using System.Windows.Input; using System.Windows.Threading; namespace MCP_Starter.ViewModels { public partial class MainWindowViewModel : BindableBase { ... DispatcherTimer timer; void Initialize_Update(int updateInterval = 100) { timer = new DispatcherTimer(); timer.Tick += Update; timer.Interval = TimeSpan.FromMill.. 2022. 7. 29.
Command Binding using Prism.Commands; using Prism.Mvvm; using System.Windows.Input; public partial class MainWindowViewModel : BindableBase { ... public ICommand StartCommand { get; set; } public MainWindowViewModel() { Initialize_Command(); } void Initialize_Command() { StartCommand = new DelegateCommand(StartCommand_Function); } void StartCommand_Function(string para) { // command procedure } ... } 2022. 7. 29.
Converter VisibleConverter sample using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Data; namespace MCP_Starter.Converters { public class StringToVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo cu.. 2022. 7. 23.