developer tip

WPF 바인딩을 강제로 새로 고치는 방법은 무엇입니까?

copycodes 2020. 8. 14. 07:54
반응형

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

반응형