간단한 바인딩을 사용하여 첨부 된 항목 소스가있는 콤보 상자가 있습니다. 콤보 상자가로드되면이 바인딩을 새로 고칠 수있는 방법이 있습니까?
답변
바인딩 표현식을 사용할 수 있습니다.
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();
}