0
我有一個自定義列表框,其itemssource綁定到viewmodel中的observablecollection。我在customListbox中創建了SelectedItemsList DependencyProperty,以便用戶可以選擇項目並更新視圖模型。這工作完美。listbox選擇項綁定從源更新
我還希望viewmodel中的綁定列表在更改時更新customListbox中的選定項。
static FrameworkPropertyMetadata fpm = new FrameworkPropertyMetadata(
new ObservableCollection<MyItem>(),
(FrameworkPropertyMetadataOptions.AffectsRender |
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault),
new PropertyChangedCallback(OnSelectedItemsChanged)
);
private static void OnSelectedItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
//the code
}
public static readonly DependencyProperty SelectedItemsListProperty =
DependencyProperty.Register("SelectedItemsList",
typeof(ObservableCollection<MyItem>),
typeof(CustomListBox), fpm);
SelectedItems是隻讀的。無論如何都要更新viewModel中的選定項目嗎?有沒有替代ListBox,會更合適?
在SelectedItemsList屬性的PropertyChangedCallback中,檢查分配的集合是否實現INotifyCollectionChanged(例如, ObservableCollection),並附加一個CollectionChanged處理程序。在該處理程序中,將項目添加到SelectedItems集合或從SelectedItems集合中刪除項目。搜索StackOverflow以「綁定SelectedItems」。這個問題已經有其他問題和答案。 – Clemens
propertyChangedCallback似乎只在Windows的初始化中被調用。我會發布一些代碼來確認我的dependency.register調用是否合適。 – kurgaan
拍攝。我想到了。我被綁定到錯誤的可觀察集合。 – kurgaan