câu trả lời Nigel là tuyệt vời. Tôi chỉ cần thêm một số thuộc tính đính kèm vào WinRT XAML Toolkit mà nên làm cho nó đơn giản hơn để làm nếu bạn đang populating GridView của bạn bằng cách sử dụng ràng buộc thuộc tính ItemsSource.
Đối với tôi, cách thông thường để sửa đổi các thuộc tính GridViewItem sau đó đã sử dụng thuộc tính GridView.ItemContainerStyle. Sử dụng phương thức đó, bạn sẽ cần phải xác định thuộc tính IsEnabled bằng cách sử dụng một bộ định kiểu kiểu và kiểu dáng không hỗ trợ các ràng buộc trong WinRT. Sử dụng ItemContainerStyleSelector có thể là một cách, nhưng nó đòi hỏi phải định nghĩa một lớp tùy chỉnh.
tôi đã tạo ra một GridViewItemExtensions class với một tài sản IsEnabled rằng bạn có thể đặt trên bất kỳ kiểm soát trong GridView.ItemTemplate của bạn như thế này:
xmlns:xyzc="using:Xyzzer.WinRT.Controls"
xyzc:GridViewItemExtensions.IsEnabled="{Binding IsEnabled}"
property has a hành vi của việc tìm kiếm các GridViewItem trong tổ tiên của nó cây thị giác và giữ giá trị IsEnabled được đồng bộ với giá trị GridViewItemExtensions.IsEnabled được đặt trên con cháu của nó.
Sau đó, như Nigel đã nói - bạn vẫn cần trích xuất mẫu từ GridViewItem và sửa đổi nó để các mục bị vô hiệu hóa không bị mất vị trí.
Nguồn
2012-05-24 16:48:18
Dường như có lỗi trong đó. http://www.simonferquel.net/blog/archive/2012/03/14/windows-8--xaml-petit-bug-sur-itemscontrol-et-workaround.aspx – Michael
Tôi đã thành công trong việc sửa đổi các vùng chứa phong cách sử dụng một DataTemplateSelector là tốt, bit của một hack, nhưng tôi đã sử dụng DTS để giết hai con chim với một viên đá. Tôi đã cập nhật câu trả lời của tôi với mã đó. –
Điều gì sẽ xảy ra nếu tôi muốn giữ tất cả các mục có thể nhấp và trình bày lựa chọn trên một số mục? Có cách nào khác không? – oXeNoN