반응형
WPF 바인딩을 강제로 새로 고치는 방법은 무엇입니까?
간단한 바인딩을 사용하여 첨부 된 항목 소스가있는 콤보 상자가 있습니다. 콤보 상자가로드되면이 바인딩을 새로 고치는 방법이 있습니까?
바인딩 표현식을 사용할 수 있습니다.
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
((ComboBox)sender).GetBindingExpression(ComboBox.ItemsSourceProperty)
.UpdateTarget();
}
그러나 Blindmeis가 언급했듯이 변경 알림을 실행할 수도 있습니다. 또한 컬렉션이 구현 INotifyCollectionChanged
(예 :에서 구현 됨 ObservableCollection<T>
)하면 동기화 되므로이 작업을 수행 할 필요가 없습니다.
mvvm을 사용하고 itemssource가 VM에있는 경우. 새로 고치고 싶을 때 컬렉션 속성에 대해 INotifyPropertyChanged를 호출하면됩니다.
OnPropertyChanged("YourCollectionProperty");
2 센트를 추가하려면 데이터 소스를 새 컨트롤 값으로 업데이트하려면 UpdateSource()
대신 UpdateTarget()
다음 을 호출해야합니다 .
((TextBox)sender).GetBindingExpression(ComboBox.TextProperty).UpdateSource();
MultiBinding 친화적 버전 ...
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
BindingOperations.GetBindingExpressionBase((ComboBox)sender, ComboBox.ItemsSourceProperty).UpdateTarget();
}
사용해보십시오 BindingExpression.UpdateTarget()
백엔드에서 데이터를 가져오고 한 줄의 코드로 화면을 업데이트했습니다. 효과가있었습니다. 왜 우리가 Interface를 구현해야하는지 잘 모르겠습니다. (Windows 10, UWP)
private void populateInCurrentScreen()
{
(this.FindName("Dets") as Grid).Visibility = Visibility.Visible;
this.Bindings.Update();
}
참고 URL : https://stackoverflow.com/questions/5676202/how-to-force-a-wpf-binding-to-refresh
반응형
'developer tip' 카테고리의 다른 글
쉘 스크립트 : 쉘 스크립트 내에서 파이썬 프로그램 실행 (0) | 2020.08.14 |
---|---|
잠금 개체가 정적이어야하는 이유는 무엇입니까? (0) | 2020.08.14 |
Flask app.secret_key 이해하기 (0) | 2020.08.13 |
clone () 메서드가 java.lang.Object에서 보호되는 이유는 무엇입니까? (0) | 2020.08.13 |
F # 개발 및 단위 테스트? (0) | 2020.08.13 |