Silverlight 3 Browser Zoom di sostegno, interfaccia utente Arresta il rendering durante i cambi di zoom

StackOverflow https://stackoverflow.com/questions/1556969

Domanda

Silverlight 3 contiene ora integrato nel supporto del browser zoom. Il problema attuale che sto affrontando è che sembra come se l'interfaccia utente Silverlight non aggiorna (Re-rendering) nel corso di più variazioni di livello di zoom che coinvolgono il (Ctrl + rotella del mouse) oppure (Ctrl +) e (Ctrl). Questo è stato trovato durante il test con il browser IE8, su un Windows XP SP2.

In un primo momento ho pensato che questo potrebbe essere un problema di prestazioni durante il rendering mio applcation ma sono anche riuscito a riprodurre lo stesso problema con un po 'di solo testo e un pulsante sulla mia pagina (XAML test può essere trovato alla fine del post) . In alcuni casi l'utente smette di rispondere (mouse cambiamenti visivi). In altri Page risponde, ma non è resa per il livello di zoom corretto.

ho potuto realizzare il mio propria funzionalità di zoom, ma penso che sarebbe stato meglio nel lungo periodo per consentire al browser o plug-in di gestire le funzioni di zoom (Perché il codice la stessa caratteristica due volte?). Sto anche pensando di disabilitare il supporto autozoom per l'applicazione Silverlight.

Dopo aver guardato un paio di altre implementazioni Silverlight ho scoperto che la maggior parte di loro che non disattivare l'autozoom hanno lo stesso problema. Dopo esaminando il problema un po 'più in profondità l'interfaccia utente sarà corretto quando le dimensioni della finestra del browser è cambiato (come questo costringe l'interfaccia utente di aggiornare la sua render dimensioni che corregge il problema) o se la pagina viene fatto scorrere (che sembra anche per inviare un rendering aggiornare l'interfaccia utente). Qualcuno sa di un modo per risolvere questo problema o una soluzione che non comporta la scrittura di codice personalizzato Zoom?

Questi sono i passi che ho usato per produrre il problema. (Se si desidera che il progetto di test ho usato fatemelo sapere e posso-mail a voi.)

Passaggio 1: Creare una nuova applicazione Silverlight con Visual Studio 2008. Fase 2: Aggiungere il Xaml alla pagina principale (XAML alla fine del mio post). Fase 3: eseguire l'applicazione in IE8 utilizzando la pagina HTML e la pagina iniziale predefinita. Passo 4: Cambiare il livello di zoom utilizzando (ruota Ctrl + mouse). Potrebbe essere necessario spostare la rotellina del mouse molto rapidamente fino a questo si verifica per la prima volta. Di solito lo zoom in poi rapidamente lo zoom out. Nota: Dopo il punto 4 l'interfaccia utente avrà alcuni dei problemi che ho sopra indicato. Questo è stato prodotto su 6 macchine diverse in esecuzione IE8.

XAML per il file MainPage:

<Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <StackPanel Orientation="Horizontal" Background="LightGray" Grid.Row="0">
        <TextBlock Text="Testing Web Page" FontSize="16" FontWeight="Bold" 
                                                           Foreground="Green"/>
    </StackPanel>
    <Button Grid.Row="1" Content="Large Damn Button" Height="34"/>
</Grid>
È stato utile?

Soluzione

Ho avuto lo stesso problema e nel mio caso la <param name="windowless" value="true" /> era la soluzione. Valori minimi e massimi riusciste esperienza necessaria per farlo funzionare.

Altri suggerimenti

Sono andato al forum silverlight su questo problema ma nessuno ci stava avendo il problema o non sapevo come risolvere il problema. Quello che ho fatto è stato fissato a Altezza minima e larghezza sul mio controllo nella pagina HTML e in XAML. Dal momento che questa operazione il problema non è tornato. Anche se sono ancora chiaro il motivo per cui questo sembrava essere un problema. Se qualcuno sta avendo un problema simile vedere il codice di esempio:

#silverlightControlHost {
    height: 100%;
    text-align:center;
    margin:0;
    padding:0;
    min-height:550px;
    min-width:800px;
}

 <form id="form1" runat="server" style="height:100%;width:100%;position:absolute;top:0px;left:0px;z-index:0;min-height:550px;min-width:800px">
<div id="silverlightControlHost" style="height:100%;width:100%;min-height:550px;min-width:800px">
   <object id="slControl" data="data:application/x-silverlight-2," type="application/x-silverlight-2" style="position:absolute;top:0px;left:0px" width="100%" height="100%">
      <param name="source" value="ClientBin/Dupree.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="3.0.40624.0" />
      <param name="autoUpgrade" value="true" />
      <param name="EnableGPUAcceleration" value="true" />
      <param name="maxframerate" value="30" />
      <param name="windowless" value="true" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object>
    <iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
</div>
</form>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top