WPF 20

WPF 및 Winforms의 UI 스레드에 있는지 여부를 감지하는 중

WPF 및 Winforms의 UI 스레드에 있는지 여부를 감지하는 중 나는 주장 방법인 "보장"을 작성했습니다.아래의 현재 OnUiThread()는 현재 스레드가 UI 스레드인지 확인합니다. 이것이 Winforms UI 스레드를 탐지하는 데 신뢰할 수 있습니까? 우리 앱은 WPF와 Winforms가 혼합되어 있습니다. 유효한 WPF UI 스레드를 감지하는 가장 좋은 방법은 무엇입니까? 이것을 하는 더 좋은 방법이 있습니까?아마도 코드 계약? Ensure.cs using System.Diagnostics; using System.Windows.Forms; public static class Ensure { [Conditional("DEBUG")] public static void CurrentlyOnUiT..

source 2023.05.25

WPF의 숫자 데이터 입력

WPF의 숫자 데이터 입력 WPF 응용 프로그램에서 숫자 값 입력을 어떻게 처리하고 있습니까? NumericUpDown 컨트롤이 없으면 텍스트 상자를 사용하고 아래 코드로 미리 보기 키다운 이벤트를 처리했지만 꽤나 추합니다. 타사 제어에 의존하지 않고 사용자로부터 숫자 데이터를 얻는 더 우아한 방법을 찾은 사람이 있습니까? private void NumericEditPreviewKeyDown(object sender, KeyEventArgs e) { bool isNumPadNumeric = (e.Key >= Key.NumPad0 && e.Key = Key.D0 && e.Key = Key.NumPad0 && e.Key = Key.D0 && e.Key Char.IsNumber(c) || c == '.' ||..

source 2023.05.15

XAML 또는 C# 코드백

XAML 또는 C# 코드백 저는 XAML을 사용하는 것을 좋아하지 않습니다. 저는 C#으로 모든 것을 코딩하는 것을 선호하지만, 제가 잘못하고 있다고 생각합니다. 어떤 경우에 XAML을 사용하는 것이 더 좋으며 언제 C#을 사용합니까?당신의 경험은 무엇입니까?C#에서 전체 창을 만드는 것은 코드의 혼란일 수 있습니다.WPF의 가장 좋은 점은 XAML을 사용하면 설계와 논리를 분리하여 코드를 훨씬 쉽게 읽을 수 있다는 것입니다. 동적 컨트롤을 만들어야 할 때는 C#을 사용하겠지만, 일반 디자인, 정적 스토리보드, 스타일, 데이터 템플릿 등은 XAML에 보관하는 편입니다.WPF의 MVVM에서 이 비디오를 확인하십시오.XAML, 코드백 및 기타 추상화에 대한 WPF 애플리케이션 구성 방법에 대해 머리를 싸매고..

source 2023.05.10

WPF 탭 컨트롤에서 탭 헤더 숨기기

WPF 탭 컨트롤에서 탭 헤더 숨기기 표시되는 탭이 하나뿐일 때 탭 헤더를 숨기는 가장 좋은 방법은 무엇입니까? TabControl chrome은 완전히 숨기면서 Tab의 내용은 표시합니다.상위 TabControl에 다음 항목이 하나만 있는 경우 접히는 DataTrigger와 함께 TabItem에 적용된 스타일을 사용할 수 있습니다. do re mi 항목이 하나뿐인 경우 TabControl을 완전히 제거하려면 해당 논리가 더 높은 수준에 있어야 합니다.그리고 만약 당신이 비밀번호로 해야 한다면... foreach (var item in tabControl.Items) (item as TabItem).Visibility = tabControl.Items.Count > 1 ? Visibility.Visibl..

source 2023.05.10

WPF 창이 어떤 모니터에 있는지 어떻게 알 수 있습니까?

WPF 창이 어떤 모니터에 있는지 어떻게 알 수 있습니까? C# 응용 프로그램에서 WPF 창이 기본 모니터에 있는지 다른 모니터에 있는지 확인하려면 어떻게 해야 합니까?창이 최대화되면 창에 의존할 수 없습니다.왼쪽 또는 창.최대화되기 전의 좌표일 수 있기 때문에 맨 위에 있습니다.그러나 모든 경우에 이 작업을 수행할 수 있습니다. var screen = System.Windows.Forms.Screen.FromHandle( new System.Windows.Interop.WindowInteropHelper(window).Handle); 지금까지 사용 가능한 다른 답변은 질문의 WPF 부분을 다루지 않습니다.제 생각은 이렇습니다. WPF는 다른 응답에서 언급된 Windows Forms의 화면 클래스에서 볼..

source 2023.05.05

Visual Studio에서 WPF Initialize Component 메서드를 찾을 수 없는 이유는 무엇입니까?

Visual Studio에서 WPF Initialize Component 메서드를 찾을 수 없는 이유는 무엇입니까? 이것은 매우 이상합니다. 다음과 같은 XAML 파일이 있습니다. etc... 그리고 다음과 같이 보이는 제 코드 옆에... using System; using System.Windows; using System.Windows.Media.Animation; using System.Threading; namespace ix.Production { public partial class Title : Window { public Title() { InitializeComponent(); } .... Visual Studio에서 Initialize 구성 요소가 "현재 컨텍스트에 없습니다"라고 주장하..

source 2023.05.05

.NET WPF 세션 간 창 크기 기억

.NET WPF 세션 간 창 크기 기억 기본적으로 사용자가 내 응용프로그램의 창 크기를 조정할 때 응용프로그램을 다시 열 때 응용프로그램의 크기가 동일합니다. 처음에는 Size Changed 이벤트를 처리하고 Height와 Width를 저장하려고 했지만, 더 쉬운 해결책이 있을 것 같습니다. 꽤 간단한 문제지만, 저는 그것에 대한 쉬운 해결책을 찾을 수 없습니다.user.config 파일에 값을 저장합니다. 설정 파일에 값을 만들어야 합니다. 값은 속성 폴더에 있어야 합니다.다섯 개의 값을 만듭니다. Topdouble Leftdouble Heightdouble Widthdouble Maximizedbool창이 최대화되는지 여부를 유지합니다.더 많은 정보를 저장하려면 다른 유형 또는 구조가 필요합니다. 처..

source 2023.05.05

WPF 창의 핸들을 찾는 중입니다.

WPF 창의 핸들을 찾는 중입니다. Windows 양식에 win1 속성이 있습니다.주 윈도우 핸들의 핸들을 반환하는 핸들입니다. WPF 창의 핸들을 가져올 수 있는 동등한 방법이 있습니까? 인터넷에서 다음 코드를 찾았어요 IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle; 하지만 제 응용 프로그램에 여러 개의 창이 있기 때문에 도움이 되지 않을 것 같습니다.그냥 지나가는 게 아니라요Application.Current.MainWindow원하는 창으로 참조를 전달하기만 하면 됩니다.new WindowInteropHelper(this).Handle기타 등등입니다.Windows에서 창을 사용하세요.Interop..

source 2023.04.25

WPF C#: 끌어서 놓기를 통해 목록 상자의 항목을 재정렬합니다.

WPF C#: 끌어서 놓기를 통해 목록 상자의 항목을 재정렬합니다. 미리 채워진 목록 상자의 항목을 마우스 끌기를 통해 위아래로 이동하는 방법을 알아보려고 합니다. 통제부를 살펴봤습니다Microsoft api에서 DoDragDrop 메서드를 사용하지만 여전히 아무 것도 할 수 없습니다. 저는 비주얼 스튜디오 환경에 익숙하지 않기 때문에 도움을 주시면 감사하겠습니다.ObservableCollection을 사용하여 하나를 만들어 보았습니다.보세요. ObservableCollection _empList = new ObservableCollection(); public Window1() { InitializeComponent(); _empList .Add(new Emp("1", 22)); _empList .Ad..

source 2023.04.25

x:Key가 없는 글로벌 스타일을 재정의하거나 모든 유형 대상 컨트롤에 명명된 스타일을 적용하는 방법

x:Key가 없는 글로벌 스타일을 재정의하거나 모든 유형 대상 컨트롤에 명명된 스타일을 적용하는 방법 프로젝트의 모든 단추에 적용할 스타일을 선언했습니다. 이 스타일은 ResourceDictionary에 있습니다. 일부 창에서는 이 스타일에서 상속하지만 값을 추가합니다. 문제는 글로벌 스타일에서 상속되지 않는다는 것입니다. 상속하려면 글로벌 스타일에 키를 할당해야 합니다. App.xaml의 ResourceDictionary에서 기본 스타일을 선언했습니다.이렇게 특정 창에서 덮어쓰면 보통 동작합니다.글로벌 리소스 사전에서 키로 기본 스타일을 정의합니다.이 기본 스타일은 해당 스타일을 적용하려는 모든 유형의 기본 유형을 대상으로 합니다.그런 다음 위에서 언급한 기본 스타일을 기반으로 원하는 유형을 대상으로 ..

source 2023.04.20