Silverlight 3 Soporte del navegador de zoom, la interfaz de usuario deja de procesamiento durante los cambios de zoom

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

Pregunta

Silverlight 3 ahora contiene construido en el soporte del navegador de zoom. El problema actual que estoy enfrentando es que parece como si la interfaz de usuario de Silverlight no se actualiza (re-render) durante varios cambios en el nivel de zoom que implican la (CTRL + Rueda del ratón) o (Ctrl +) y (Ctrl). Este fue encontrado cuando se prueba con el navegador Internet Explorer 8, en un Windows XP SP2.

Al principio pensé que esto podría ser un problema de rendimiento cuando se representa mi applcation pero también lograron reproducir el mismo problema, con sólo un poco de texto y un botón en mi página (la xaml test se encuentra al final del post) . En algunos casos la interfaz de usuario deja de responder (ratón sobre cambios visuales). En otros la página está respondiendo, pero no se presta para el nivel de zoom correcta.

Podría poner en práctica mi propia funcionalidad de zoom, pero creo que sería mejor en el largo plazo para que el plug-in del navegador o manejan las funciones de zoom (¿Por qué código de la misma función dos veces?). También estoy considerando deshabilitar el soporte autozoom para la aplicación de Silverlight.

Después de mirar algunas otras implementaciones de Silverlight me encontré con que la mayoría de ellos que no desactive la autozoom tienen el mismo problema. Después de mirar en el problema un poco más la interfaz de usuario se corregiría cuando el tamaño de la ventana del navegador ha cambiado (ya que esto obliga a la interfaz de usuario para actualizar su render tamaño que corrige el problema) o si se desplaza la página (que también parece enviar un render actualizar la interfaz de usuario). ¿Alguien sabe de una manera de resolver este problema o una solución que no implique escribir código personalizado zoom?

Estos son los pasos que he utilizado para producir el problema. (Si desea que el proyecto de prueba utilicé hágamelo saber y puedo enviar por correo electrónico a usted.)

Paso 1: Crear una nueva aplicación de Silverlight con Visual Studio 2008. Paso 2: Agregar el Xaml a la página principal (xaml al final de mi post). Paso 3: Ejecutar la aplicación en IE8 utilizando la página HTML y la página de inicio predeterminada. Paso 4: Cambiar el nivel de zoom mediante el uso de (rueda del ratón Ctrl +). Puede que tenga que mover la rueda del ratón muy rápidamente hasta que esto se produce la primera vez. Por lo general, hacer zoom y rápidamente reducir el zoom. Nota: Después del paso 4 de la interfaz de usuario tendrá algunos de los problemas que he dicho anteriormente. Esto se ha producido en 6 diferentes máquinas que ejecutan IE8.

código XAML para el archivo 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>
¿Fue útil?

Solución

Yo tenía el mismo problema y en mi caso el <param name="windowless" value="true" /> era la solución. Valores mínimo y máximo requerido en aren `t para conseguir que funcione.

Otros consejos

Fui al foro de Silverlight sobre este tema, pero nadie allí estaba teniendo el problema o no sabía cómo solucionarlo. Lo que hice fue creada una altura y anchura mínima en mi control en la página HTML y en el XAML. Desde hacer esto, el problema no ha vuelto a aparecer. Aunque estoy todavía no está claro por qué esto parecía ser un problema. Si alguien está teniendo un problema similar ver el código de ejemplo siguiente:

#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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top