2015-12-16 13 views
11

Sto creando un'applicazione utilizzando RibbonController in WPF.RibbonGallery disabilitato in .net 4.6

Sta funzionando bene fino a quando ho installato. Rete 4.6. Quindi il mio "RibbonGallery" è disabilitato (menu a discesa Punti di vista). Ho cercato di abilitare tramite codice anche, ma senza fortuna;. (

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

Vedi allegati Nessun problema con 4,5.Net 4.5 (Working)

.Net 4.6 (problema)enter image description here

Grazie in anticipo ...

risposta

17

Questo è in realtà un bug in RibbonGallery che sembra essere esposto dalla nuova logica in 4.6.1. Il bug è che RG non inizializza correttamente il proprio stato interno, in modo che se qualcuno chiama CoerceValue (IsEnabledProperty) costringe il valore a false (cioè disabilita la galleria). Ad esempio, chiamando ribbonGallery.IsEnabled = true; in realtà disabiliterai l'RG (anche in 4.0).

.Net 4.6.1 ha una logica migliore per propagare IsEnabled ai discendenti. Questa logica termina chiamando ribbonGallery.CoerceValue(IsEnabledProperty), che disabilita il RG a causa del bug.

C'è una soluzione alternativa: modificare il comando RG. Ciò fa sì che l'RG ripristini correttamente il proprio stato interno, in modo che le coercizioni future facciano la cosa giusta. Per esempio:

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

Grazie per aver confermato che questo è un bug. Ma per non capire come risolvere questo. Puoi eloberat per favore – Satish

+0

Bent, funziona ... :) ma ancora come funziona non ho capito ... – Satish

+1

@satish_srg - RibbonGallery coercita IsEnabled su false se ha un comando il cui CanExecute è falso. Se non c'è alcun comando, quella coercizione non dovrebbe accadere, ma una inizializzazione errata lo fa accadere comunque. Impostando il comando su un valore non nullo si cancella lo stato di errore. Impostandolo su null, scarta il comando che non volevi realmente, ma ora l'RG si trova in uno stato in cui forzerà correttamente IsEnabled. –

2

articoli per disabili a RibbonGallery è lo stesso problema che sto ottenendo, una volta IsEnabled è impostata su false non posso abilitare nuovamente. Questo funzionava in precedenza e notato dall'aggiornamento a Net 4.6 sul PC. Ho eseguito un vecchio programma di qualche anno fa senza alcuna ricompilazione e soffre della stessa sorte. Quindi, anche se Net 4.5 è mirato, presenterà lo stesso problema associato al PC .Net installato. Se il PC utilizza Windows 10, non è possibile eseguire il rollback del Net Framework su Net 4.5 poiché utilizza il minimo 4.6?

Provato a impostare il comando su null ma questo non ha avuto successo. Provato Net 4.6.1 installato su PC e varie combinazioni mirate ma non riuscite. Per quanto mi riguarda, penso che strapperò il nastro della Microsoft, che mi è sempre sembrato un buggy che mi è costato tempo di sviluppo.

+1

Voglio confermare, quel bug è riprodotto, quando 4.6 è installato, anche quando il progetto ha come target 4.5. – Dennis

Problemi correlati