UpdateSourceTrigger 속성은 바인딩 소스 업데이트 타이밍을 결정하는 값을 가져오거나 설정할 때 사용되는 속성입니다.
Default
Text속성의 기본값은 LostFocus이지만, 대부분의 종속성 속성의 기본값은 PropertyChanged입니다.
PropertyChanged
바인딩 대상 속성이 변경될 때마다 바인딩 소스를 즉시 업데이트합니다.
LostFocus
바인딩 대상 요소가 포커스를 잃을 때마다 바인딩 소스를 업데이트합니다.
Explicit
UpdateSource 메서드를 호출할 때만 바인딩 소스를 업데이트합니다.
예)
BindingExpression bindingExpression = textBox.GetBindingExpression(TextBox.TextProperty);
bindingExpression.UpdateSource();
* 간단히 말하면 커서가 벗어나는 등의 Event 가 발생하는 경우(LostFocus) 속성변경 처리를 할것이냐 아니면 실시간으로(PropertyChanged) 반영할 것이냐라고 보면 될것같습니다.
아래는 간단한 예시입니다.
MainWindow.xaml
<Window x:Class="UpdateSourceTriggerTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="190" Width="394.666">
<Grid>
<StackPanel>
<Label Content="UpdateSourceTrigger=PropertyChanged"/>
<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}"/>
<Rectangle StrokeThickness="1" Fill="#465168" Height="1" />
<Label Content=" UpdateSourceTrigger=Default"/>
<TextBox Text="{Binding Name, UpdateSourceTrigger=Default}"/>
<Rectangle StrokeThickness="1" Fill="#465168" Height="1" />
<Label Content=" Value"/>
<Label Content="{Binding Name}"/>
</StackPanel>
</Grid>
</Window>
MainWindow.xaml.cs
using System.Windows;
namespace UpdateSourceTriggerTest
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new TestData() { Name = "TEST", Order = 1 };
}
public class TestData
{
public string Name { get; set; }
public int Order { get; set; }
}
}
}
위 예시를 보면
PropertyChanged 인 경우는 실시간으로 변경사항이 반영되지만
Default 인 경우는 커서를 벗어난 경우 변경사항이 반영되는 걸 확인할 수 있습니다.
WPF DataTrigger 를 이용해 특정 Control 의 Action 에 따라 처리하기 (0) | 2024.08.13 |
---|---|
WPF Background="{x:Null}" Background="Transparent" 차이 (0) | 2024.08.13 |
WPF TextBox 에 PlaceHolder 설정하기 (0) | 2024.07.25 |
WPF DataContext 의 특정 Command 를 찾아 실행하기 (0) | 2024.07.25 |
WPF MultiBinding 사용하기 (0) | 2024.07.25 |