답변:
바인딩 표현식을 사용할 수 있습니다.
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
((ComboBox)sender).GetBindingExpression(ComboBox.ItemsSourceProperty)
.UpdateTarget();
}
그러나 Blindmeis가 언급했듯이 변경 알림을 실행할 수도 있습니다. 또한 컬렉션이 구현되면 INotifyCollectionChanged
(예 :에서 구현 됨 ObservableCollection<T>
) 동기화 되므로이 작업을 수행 할 필요가 없습니다.
mvvm을 사용하고 itemssource가 VM에있는 경우. 새로 고치고 싶을 때 컬렉션 속성에 대해 INotifyPropertyChanged를 호출하면됩니다.
OnPropertyChanged("YourCollectionProperty");
INotifyPropertyChanged
있지만 포트를 비공개로 유지해야합니다. 그 래퍼를 사용하므로 알리려는 속성이 항상 래퍼를 통과하도록 프로젝트의 다른 곳에서 사용하는 해당 포트의 모든 항목에 대한 속성과 메서드를 작성해야합니다
nameof(YourCollectionProperty)
리터럴 문자열과는 반대로 사용하는 것을 좋아 합니다. 이렇게하면 버그가 리팩토링되는 것을 방지하고 실제로 의도 한 내용이 더 명확 해집니다. 물론 이것은 CallerMemberName
더 좋은 속성을 사용할 수없는 곳입니다
사용해보십시오 BindingExpression.UpdateTarget()
백엔드에서 데이터를 가져오고 한 줄의 코드로 화면을 업데이트했습니다. 효과가있었습니다. 왜 우리가 Interface를 구현해야하는지 잘 모르겠습니다. (Windows 10, UWP)
private void populateInCurrentScreen()
{
(this.FindName("Dets") as Grid).Visibility = Visibility.Visible;
this.Bindings.Update();
}