반응형
WPF 바인딩을 강제로 새로 고치는 방법
간단한 바인딩으로 아이템 소스가 첨부된 콤보 박스를 받았습니다.콤보 박스가 로드되면 이 바인딩을 새로 고칠 수 있는 방법이 있습니까?
바인딩 표현식을 사용할 수 있습니다.
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
((ComboBox)sender).GetBindingExpression(ComboBox.ItemsSourceProperty)
.UpdateTarget();
}
그러나 Blindmeis가 지적한 바와 같이 콜렉션이 구현되어 있는 경우 변경 알림을 실행할 수도 있습니다.INotifyCollectionChanged
(예를 들어 에 실장되어 있는 경우)ObservableCollection<T>
)가 동기화되므로 이 작업을 수행할 필요가 없습니다.
mvvm을 사용하고 있으며 아이템소스가 VM에 있는 경우 INotify로 문의하십시오.새로 고치려는 경우 컬렉션 속성에 대해 변경된 속성입니다.
OnPropertyChanged(nameof(YourCollectionProperty));
2센트를 더하려면 컨트롤의 새로운 값으로 데이터 소스를 업데이트하려면UpdateSource()
대신UpdateTarget()
:
((TextBox)sender).GetBindingExpression(TextBox.TextProperty).UpdateSource();
다중 바인딩에 적합한 버전...
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
BindingOperations.GetBindingExpressionBase((ComboBox)sender, ComboBox.ItemsSourceProperty).UpdateTarget();
}
사용해보십시오.BindingExpression.UpdateTarget()
언급URL : https://stackoverflow.com/questions/5676202/how-to-force-a-wpf-binding-to-refresh
반응형
'source' 카테고리의 다른 글
Observable Collection과 Binding List의 차이 (0) | 2023.04.17 |
---|---|
리모트 Git 저장소에 수정된 커밋을 푸시하려면 어떻게 해야 합니까? (0) | 2023.04.17 |
sed/grep을 사용하여 두 단어 사이에 텍스트를 추출하는 방법은 무엇입니까? (0) | 2023.04.17 |
프로그램을 실행하면 "bash: ./program permission denied"라고 표시됩니다. (0) | 2023.04.17 |
Windows cmd에서 사용자 입력을 요청하고 결과를 다른 명령어로 사용하려면 어떻게 해야 합니까? (0) | 2023.04.17 |