2009-09-10 26 views
5

Sau đây là các bộ phận liên quan của tập tin XAML:Không thể có được ListBox và UpdateTarget làm việc

xmlns:local="clr-namespace:BindingTest" 
<ListBox x:Name="myList" 
     ItemsSource="{Binding Source={x:Static local:MyClass.Dic}, 
           Path=Keys, 
           Mode=OneWay, 
           UpdateSourceTrigger=Explicit}"> 
</ListBox> 

MyClass là một lớp public static và Dic là một tài sản công cộng tĩnh, một từ điển.

Tại một thời điểm nhất định, tôi thêm các mục vào từ điển và muốn ListBox phản ánh các thay đổi.
Đây là mã tôi nghĩ về việc sử dụng nhưng nó không hoạt động:

BindingExpression binding; 
binding = myList.GetBindingExpression(ListBox.ItemsSourceProperty); 
binding.UpdateTarget(); 

Mã này thay vì hoạt động:

myList.ItemsSource = null; 
myList.ItemsSource = MyClass.dic.Keys; 

Tôi muốn sử dụng UpdateTarget, nhưng tôi không thể có được nó làm việc.
Tôi đang làm gì sai?

Trả lời

11

Việc ràng buộc các mục được xử lý khá khác với ràng buộc chuẩn của DependencyProperty s trong WPF (cụ thể là bởi ItemsControl s).

Tôi nghĩ rằng bạn muốn một cái gì đó như sau:

var itemsView = CollectionViewSource.GetDefaultView(myListBox.ItemsSource); 
itemsView.Refresh() 

Đó là trên thực tế các đối tượng ICollectionView mà bạn muốn làm mới. Điều này có hiệu quả là đối tượng quản lý bộ sưu tập ràng buộc cho bạn. Xem the MSDN page để biết thêm thông tin.

+0

Cảm ơn, nó hoạt động hoàn hảo. – RobSullivan

Các vấn đề liên quan