2015-12-16 9 views
11

Ich erstelle eine Anwendung mit RibbonController in WPF.RibbonGallery deaktiviert in .net 4.6

Es funktioniert gut, bis ich .net 4.6 installiert habe. Dann ist meine "RibbonGallery" deaktiviert Zustand (Viewpoints Dropdown-Menü). Ich habe versucht, durch den Code zu ermöglichen, auch aber kein Glück;. (

<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> 

Siehe Anhänge Kein Problem mit 4,5.Net 4.5 (Working)

.Net 4.6 (Ausgabe)enter image description here

Vielen Dank im Voraus ...

Antwort

17

Dies ist eigentlich ein Fehler in der RibbonGallery, der gerade durch neue Logik in ausgesetzt wird 4.6.1. Der Fehler ist, dass RG seinen internen Zustand nicht korrekt initialisiert, so dass, wenn jemand CoerceValue (IsEnabledProperty) aufruft, er den Wert auf false setzt (d. H. Die Galerie deaktiviert). Wenn Sie beispielsweise ribbonGallery.IsEnabled = true; aufrufen, wird der RG sogar deaktiviert (sogar in 4.0).

. Net 4.6.1 hat eine bessere Logik zum Weiterleiten von IsEnabled an Nachkommen. Diese Logik ruft schließlich ribbonGallery.CoerceValue(IsEnabledProperty) auf, wodurch der RG aufgrund des Fehlers deaktiviert wird.

Es gibt eine Problemumgehung: Ändern Sie den Befehl des RG. Dies bewirkt, dass der RG seinen internen Zustand korrekt zurücksetzt, so dass zukünftige Zwänge das Richtige tun. Zum Beispiel:

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

Danke für die Bestätigung, das ist ein Fehler. Aber ich verstehe nicht, wie ich das lösen soll. Kannst du eloberat bitte – Satish

+0

Bent, es funktioniert ... :) aber immer noch wie es funktioniert habe ich nicht verstanden ... – Satish

+1

@satish_srg - RibbonGallery erzwingt IsEnabled zu false, wenn es einen Befehl hat, dessen CanExecute falsch ist. Wenn es überhaupt keinen Befehl gibt, sollte dieser Zwang nicht auftreten, aber eine fehlerhafte Initialisierung bewirkt, dass dies trotzdem geschieht. Wenn Sie den Befehl auf einen Wert ungleich Null setzen, wird der fehlerhafte Status bereinigt. Wenn Sie ihn auf null zurücksetzen, wird der Befehl verworfen, den Sie nicht wirklich wollten, aber jetzt befindet sich der RG in einem Zustand, in dem er IsEnabled korrekt erzwingt. –

2

Disabled Artikel in Ribbon das gleiche Problem ist, ich bin immer, einmal IsEnabled auf false gesetzt ist, kann ich nicht wieder aktivieren. Dies funktionierte vorher und wurde seit dem Update auf Net 4.6 auf dem PC bemerkt. Ich habe ein altes Programm aus ein paar Jahren ohne Neukompilierung ausgeführt und es leidet unter dem gleichen Schicksal. Selbst wenn Net 4.5 anvisiert wird, zeigt es das gleiche Problem wie es mit dem installierten PC .Net verbunden ist. Wenn der PC Windows 10 verwendet, kann das Net Framework nicht auf Net 4.5 zurückgesetzt werden, da es 4.6 Minimum verwendet?

Es wurde versucht, den Befehl auf null zu setzen, aber dies war nicht erfolgreich. Tried Net 4.6.1 auf dem PC installiert und verschiedene Kombinationen gezielt, aber nicht erfolgreich. Für mich denke ich, dass ich die Microsoft Ribbon-Sachen herausreißen werde, was mir in der Entwicklungszeit immer ein buggy nachträglicher Einfall zu sein schien.

+1

Ich möchte bestätigen, Dieser Fehler wird reproduziert, wenn 4.6 ist installiert, selbst wenn das Projekt auf 4.5 ausgerichtet ist. – Dennis

Verwandte Themen