Tôi có một điều khiển WPF ListBox
và tôi đang đặt ItemsSource
của mình thành một tập hợp các đối tượng mục. Làm thế nào tôi có thể ràng buộc các tài sản IsSelected
của ListBoxItem
đến một tài sản Selected
của một đối tượng mục tương ứng mà không cần phải có một thể hiện của đối tượng để đặt làm Binding.Source
?Ràng buộc thuộc tính IsSelected của ListBoxItem vào một thuộc tính trên đối tượng từ nguồn của nó
17
A
Trả lời
34
Chỉ cần ghi đè ItemContainerStyle:
<ListBox ItemsSource="...">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding Selected}"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Oh, bằng cách này, tôi nghĩ rằng bạn muốn điều này tuyệt vời từ dr.WPF: ItemsControl: A to Z.
Hy vọng điều này sẽ hữu ích.
2
Tôi đang tìm một giải pháp trong mã, vì vậy đây là bản dịch của điều đó.
System.Windows.Controls.ListBox innerListBox = new System.Windows.Controls.ListBox();
//The source is a collection of my item objects.
innerListBox.ItemsSource = this.Manager.ItemManagers;
//Create a binding that we will add to a setter
System.Windows.Data.Binding binding = new System.Windows.Data.Binding();
//The path to the property on your object
binding.Path = new System.Windows.PropertyPath("Selected");
//I was in need of two way binding
binding.Mode = System.Windows.Data.BindingMode.TwoWay;
//Create a setter that we will add to a style
System.Windows.Setter setter = new System.Windows.Setter();
//The IsSelected DP is the property of interest on the ListBoxItem
setter.Property = System.Windows.Controls.ListBoxItem.IsSelectedProperty;
setter.Value = binding;
//Create a style
System.Windows.Style style = new System.Windows.Style();
style.TargetType = typeof(System.Windows.Controls.ListBoxItem);
style.Setters.Add(setter);
//Overwrite the current ItemContainerStyle of the ListBox with the new style
innerListBox.ItemContainerStyle = style;
+3
Xin chào BrandonS, Có thể cả hai giải pháp đều hoạt động tốt, tuy nhiên khi có thể, vui lòng sử dụng cách tiếp cận khai báo xml để xác định hành vi giao diện người dùng. Bằng cách đó nhiều người hơn (tương tác devs, vv) có thể hiểu nó và sửa đổi nó một cách dễ dàng. Trân trọng, – wacdany
Các vấn đề liên quan
- 1. Ràng buộc với thuộc tính IsSelected của phụ huynh ListViewItem
- 2. Nguồn ràng buộc-Thuộc tính của MediaElement với FileInfo
- 3. WPF ràng buộc thuộc tính của usercontrol vào thuộc tính của cha mẹ
- 4. WPF: Tự động ràng buộc danh sách (một số) thuộc tính của đối tượng
- 5. Ràng buộc thuộc tính điền vào đường dẫn đến thuộc tính Foreground từ ContentControl theo kiểu
- 6. Thuộc tính của đối tượng hàm Javascript
- 7. Ràng buộc với thuộc tính tĩnh
- 8. truy cập thuộc tính đối tượng của một javascript mà không biết rằng tên thuộc tính
- 9. Số đối tượng Actionscript của thuộc tính
- 10. Hiển thị thuộc tính bổ sung của thuộc tính TFrame trên thanh tra đối tượng
- 11. Thuộc tính mới của thuộc tính ARC
- 12. DataGridCheckBoxColumn IsReadOnly thuộc tính ràng buộc
- 13. Cách lấy giá trị của thuộc tính của đối tượng theo tên thuộc tính trong PowerShell?
- 14. LINQ chọn đối tượng từ danh sách tùy thuộc vào đối tượng thuộc tính
- 15. Ràng buộc Trình kích hoạt kiểu WPF vào thuộc tính phụ thuộc tùy chỉnh
- 16. Cách kiểm tra nhiều thuộc tính của một đối tượng
- 17. Ràng buộc và ràng buộc thuộc tính phụ thuộc trong Kiểm soát tùy chỉnh
- 18. Ràng buộc dữ liệu Thuộc tính POCO
- 19. Truy cập các thuộc tính của một mảng đối tượng
- 20. Ràng buộc đối với các thuộc tính JavaFX của một đối tượng có thể được chuyển đổi
- 21. Thuộc tính đối tượng JavaScript có thể tham chiếu đến thuộc tính khác của cùng một đối tượng không?
- 22. Ràng buộc hai chiều thuộc tính VerticalOffset trên ScrollViewer?
- 23. A 'ràng buộc' chỉ có thể được đặt trên một thuộc tính phụ thuộc của một DependencyObject
- 24. Thuộc tính bắt buộc trên thuộc tính danh sách chung
- 25. Ràng buộc với thuộc tính thứ 2 nếu thuộc tính thứ nhất là "không xác định"
- 26. Thuộc tính PythonError: Đối tượng không có thuộc tính
- 27. Thuộc tính ràng buộc điều kiện không hoạt động?
- 28. Tạo ID duy nhất cho đối tượng python dựa trên các thuộc tính của nó
- 29. Ràng buộc một thuộc tính chuỗi dữ liệu văn bản vào một khóa StaticResource
- 30. Buộc sử dụng thuộc tính trên thuộc tính, nếu chúng đã có thuộc tính khác
Đây chính xác là những gì tôi đang tìm kiếm. Cảm ơn. – BrandonS
Đáng buồn thay, điều này không làm việc với WinRT vì [các ràng buộc không được hỗ trợ trên Setters] (http://stackoverflow.com/a/11869065/641833). – Trisped