WPF(Windows Presentation Foundation)는 .NET Framework에서 GUI 기반 응용 프로그램을 개발하는 데 사용되는 기술입니다. WPF에서 사용되는 몇 가지 중요한 메서드와 간단한 예제를 제공하겠습니다.
1. Dispatcher.Invoke 메서드
WPF에서는 UI 스레드에서만 UI 업데이트를 수행해야 합니다. 이를 위해 Dispatcher.Invoke 메서드를 사용할 수 있습니다.
// 예제: UI 스레드에서 비동기 작업 수행
private void UpdateUI(string message)
{
Application.Current.Dispatcher.Invoke(() =>
{
// UI 업데이트 코드
StatusLabel.Content = message;
});
}
2. PropertyChanged 이벤트 및 OnPropertyChanged 메서드
데이터 바인딩을 사용하여 UI 요소를 데이터 소스에 연결할 때, 속성 값이 변경될 때마다 PropertyChanged 이벤트를 발생시켜 UI를 업데이트할 수 있습니다.
// 예제: OnPropertyChanged 메서드 활용
public class Person : INotifyPropertyChanged
{
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged(nameof(Name));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
3. Storyboard 및 VisualStateGroup:
애니메이션 및 UI 상태 전환을 관리하기 위해 Storyboard 및 VisualStateGroup을 사용할 수 있습니다.
<!-- 예제: VisualState 및 Storyboard를 사용한 애니메이션 -->
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="MyElement" Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:1"/>
</Storyboard>
</VisualState>
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="MyElement" Storyboard.TargetProperty="Opacity" To="0.5" Duration="0:0:1"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
4. CommandBinding 및 ICommand
사용자 인터페이스 요소에 명령을 연결하려면 CommandBinding 및 ICommand를 사용합니다.
// 예제: ICommand 및 CommandBinding을 사용한 명령 처리
public class RelayCommand : ICommand
{
private readonly Action<object> _execute;
private readonly Predicate<object> _canExecute;
public RelayCommand(Action<object> execute, Predicate<object> canExecute = null)
{
_execute = execute ?? throw new ArgumentNullException(nameof(execute));
_canExecute = canExecute;
}
public bool CanExecute(object parameter) => _canExecute == null || _canExecute(parameter);
public void Execute(object parameter) => _execute(parameter);
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
}
// XAML에서의 사용 예제:
<!-- CommandBinding -->
<Window.CommandBindings>
<CommandBinding Command="{x:Static local:CustomCommands.MyCommand}" Executed="MyCommand_Executed" CanExecute="MyCommand_CanExecute"/>
</Window.CommandBindings>
<!-- Button에 ICommand 연결 -->
<Button Command="{x:Static local:CustomCommands.MyCommand}" Content="Click me"/>
이것은 WPF에서 자주 사용되는 몇 가지 기본 메서드 및 개념에 대한 간단한 예제입니다. WPF는 강력하고 유연한 플랫폼이므로 실제 프로젝트에서는 이러한 개념을 확장하고 조합하여 다양한 요구 사항을 충족시킬 수 있습니다.
'WPF' 카테고리의 다른 글
WPF를 활용한 데이터 입력 및 출력 시스템 설계 (0) | 2023.12.17 |
---|---|
WPF 언어를 사용하여 CSV 데이터 생성하기 (0) | 2023.11.27 |
WPF 로또 당첨번호 자동 생성하기 (0) | 2023.11.10 |
WPF 코드 최적화 방법 (0) | 2023.11.02 |
WPF 대표적인 에러의 해결 방법 (0) | 2023.10.27 |
댓글