シンプルバインドを使用してアイテムソースがアタッチされたコンボボックスがあります。コンボボックスが読み込まれたら、このバインドを更新する方法はありますか?
バインディング式を使用できます:
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()
を使用してみてください