티스토리 뷰
C#/WPF
WPF tutorial - Using the DataContext, The UpdateSourceTrigger property
광그로 2017. 6. 22. 20:50http://www.wpf-tutorial.com/data-binding/using-the-datacontext/
http://www.wpf-tutorial.com/data-binding/the-update-source-trigger-property/
DataContext 속성의 디폴트는 null입니다. 그러나, DataContext는 컨트롤 계층에 의하여 상속되므로 하위 컨트롤에서 사용할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | <StackPanel Margin="15"> <WrapPanel> <TextBlock Text="Window title : " ></TextBlock> <TextBox Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" Width="150"></TextBox> </WrapPanel> <WrapPanel Margin="0,10,0,0"> <TextBlock Text="Window dimensions: " /> <TextBox Text="{Binding Width}" Width="50" /> <TextBlock Text=" x " /> <TextBox Text="{Binding Height}" Width="50" /> </WrapPanel> </StackPanel> | cs |
1 2 3 4 5 | public MainWindow() { InitializeComponent(); this.DataContext = this; } | cs |
창에는 창에는 컨트롤에 전달되는 DataContext가 있기 때문에, 각각의 binding에 소스를 정의할 필요가 없습니다.
하지만, 이와 같은 경우, TextBox의 변경 내용이 즉시 소스로 보내지지 않고, TextBox에서의 포커싱이 사라지면 업데이트 됩니다.
위와 같은 동작은 UpdateSourceTrigger라는 바인딩 속성에 의해 제어됩니다. 디폴트로는 Text 속성을 제외한 모든 속성은 PropertyChanged(속성 변경 시 즉시 업데이트)됩니다. Tex속성은 LostFocus(포커스를 잃어버려렸을 때 업데이트)됩니다.
또다른 속성으로는 수동 업데이트 인 Explicit이 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <StackPanel Margin="15"> <WrapPanel> <TextBlock Text="Window title: " /> <TextBox Name="txtWindowTitle" Text="{Binding Title, UpdateSourceTrigger=Explicit}" Width="150" /> <Button Name="btnUpdateSource" Click="btnUpdateSource_Click" Margin="5,0" Padding="5,0">*</Button> </WrapPanel> <WrapPanel Margin="0,10,0,0"> <TextBlock Text="Window dimensions: " /> <TextBox Text="{Binding Width, UpdateSourceTrigger=LostFocus}" Width="50" /> <TextBlock Text=" x " /> <TextBox Text="{Binding Height, UpdateSourceTrigger=PropertyChanged}" Width="50" /> </WrapPanel> </StackPanel> | cs |
1 2 3 4 5 6 7 8 9 10 11 | public MainWindow() { InitializeComponent(); this.DataContext = this; } private void btnUpdateSource_Click(object sender, RoutedEventArgs e) { BindingExpression binding = txtWindowTitle.GetBindingExpression(TextBox.TextProperty); binding.UpdateSource(); } | cs |
'C# > WPF' 카테고리의 다른 글
WPF tutorial - 중간점검 (0) | 2017.06.23 |
---|---|
WPF tutorial - Responding to changes (0) | 2017.06.22 |
WPF tutorial - Introduction to WPF data binding (0) | 2017.06.22 |
WPF tutorial - The Grid - GridSplitter, A contact form (0) | 2017.06.22 |
WPF tutorial - The Grid(Rows&Columns, Units,Spanning) (0) | 2017.06.22 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- WPF
- 데이터 바인딩
- 문자열
- 객체
- FEED
- DP
- C++
- MVVM
- 백준
- BOJ
- Add TapGesture
- 생활코딩
- 타일링
- CustomCollectionViewCell
- CollectionView
- 코딩야학
- UIView Animation
- command
- 백준온라인
- Cell Animation
- Fakebook
- BFS
- 그래프
- dfs
- 스택
- listview
- XAML
- Custom Cell
- Grid
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함