2015-12-16 16 views
11

Tôi đang tạo một ứng dụng bằng cách sử dụng RibbonController trong WPF.RibbonGallery bị tắt trong .net 4.6

Nó hoạt động tốt cho đến khi tôi cài đặt .net 4.6. Sau đó, "RibbonGallery" của tôi bị tắt trạng thái (menu thả xuống điểm nhìn). Tôi cố gắng để kích hoạt thông qua Bộ luật cũng nhưng không có may mắn;. (

<Custom:RibbonGallery SelectedValue="Entrancelobby" SelectedValuePath="Content" ScrollViewer.VerticalScrollBarVisibility="Visible" MaxHeight="500"> 
     <Custom:RibbonGalleryCategory Name="viewpointsList" FontFamily="Times New Roman" FontSize="14"> 
       <Custom:RibbonGalleryItem Content="Entrancelobby" Foreground="Black" /> 
       <Custom:RibbonGalleryItem Content="Entrancelobby 01" Foreground="Black"/> 
     <Custom:RibbonGalleryCategory> 
</Custom:RibbonGallery> 

Xem file đính kèm Không có vấn đề với 4,5.Net 4.5 (Working)

Net 4.6 (vấn đề)enter image description here

Cảm ơn trước ...

Trả lời

17

Đây thực sự là một lỗi trong RibbonGallery chỉ xảy ra khi được hiển thị bởi logic mới trong 4.6.1. Lỗi là RG không khởi tạo trạng thái bên trong của nó một cách chính xác, để nếu có ai gọi CoerceValue (IsEnabledProperty) nó sẽ ép buộc giá trị thành false (tức là vô hiệu hóa bộ sưu tập). Ví dụ, gọi ribbonGallery.IsEnabled = true; sẽ thực sự vô hiệu hóa RG (ngay cả trong 4.0).

.Net 4.6.1 có logic tốt hơn để truyền IsEnabled cho con cháu. Logic này kết thúc bằng cách gọi ribbonGallery.CoerceValue(IsEnabledProperty), vô hiệu hóa RG do lỗi.

Có một giải pháp thay thế: Thay đổi Lệnh RG. Điều này làm cho RG thiết lập lại trạng thái bên trong của nó một cách chính xác, do đó các lần ép buộc trong tương lai làm điều đúng. Ví dụ:

ribbonGallery.Command = ApplicationCommands.Print; // arbitrary command 
ribbonGallery.Command = null;      // don't keep the command 
+1

Cảm ơn bạn đã xác nhận đây là lỗi. Nhưng tôi không hiểu cách giải quyết vấn đề này. Bạn có thể eloberat xin vui lòng – Satish

+0

Bent, nó làm việc ... :) nhưng vẫn còn như thế nào nó hoạt động tôi đã không hiểu ... – Satish

+1

@satish_srg - RibbonGallery coerces IsEnabled false nếu nó có một lệnh có CanExecute là sai. Nếu không có lệnh nào cả, sự ép buộc đó sẽ không xảy ra, nhưng việc khởi tạo bị lỗi sẽ khiến nó xảy ra. Việc đặt lệnh thành giá trị không null sẽ làm sạch trạng thái lỗi. Thiết lập nó trở lại để hủy bỏ lệnh mà bạn không thực sự muốn, nhưng bây giờ RG đang ở trong trạng thái mà nó sẽ ép buộc IsEnabled một cách chính xác. –

2

mục Disabled trong RibbonGallery là cùng một vấn đề tôi nhận được, một khi IsEnabled được thiết lập để sai tôi không thể cho phép một lần nữa. Điều này đã được làm việc trước đó và nhận thấy kể từ khi cập nhật lên Net 4.6 trên PC. Tôi đã chạy một chương trình cũ từ vài năm trở lại mà không cần biên dịch lại và nó cũng bị chung số phận. Vì vậy, ngay cả khi Net 4.5 được nhắm mục tiêu, nó sẽ hiển thị cùng một vấn đề vì nó được liên kết với PC .Net được cài đặt. Nếu PC sử dụng Windows 10, khung Net có thể không được khôi phục về Net 4.5 vì nó sử dụng tối thiểu 4.6 phải không?

Đã cố gắng đặt Lệnh thành không nhưng điều này không thành công. Đã thử cài đặt 4.6.1 trên PC và các kết hợp khác nhau được nhắm mục tiêu nhưng không thành công. Đối với tôi, tôi nghĩ rằng tôi sẽ tách ra các công cụ ribbon của Microsoft mà luôn luôn có vẻ như một lỗi sau khi suy nghĩ chi phí cho tôi trong thời gian phát triển.

+1

Tôi muốn xác nhận, lỗi đó được sao chép, khi 4.6 được cài đặt, ngay cả khi dự án đang nhắm mục tiêu 4.5. – Dennis

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