source

WPF 바인딩을 강제로 새로 고치는 방법

lovecheck 2023. 4. 17. 21:59
반응형

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

반응형