Silverlight 3中现在包含内置的浏览器缩放支持。我目前面临的问题是,它在涉及(Ctrl +鼠标滚轮)或(按Ctrl +)和(按Ctrl - )多个缩放水平的变化好像Silverlight的用户界面不会更新(重新渲染)。这是与IE8浏览器测试时,在Windows XP SP2中找到。

起初我还以为渲染我的applcation时,这可能是一个性能问题,但我也设法重现,只有一些文字同样的问题,我的网页上的按钮(测试XAML可以在帖子的末尾找到) 。在一些情况下,UI停止响应(在视觉上的变化小鼠)。在别人的页面响应,但不会呈现正确的缩放级别。

我可以实现我自己的缩放功能,但我认为这将是从长远来看,最好让浏览器或者插件的处理缩放功能(为什么代码相同的功能两次?)。我也在考虑禁止用于Silverlight应用程序的自动缩放的支持。

在看一些其他的Silverlight实现后,我发现,不禁用自动缩放他们中的大多数有同样的问题。寻找到问题后得更深一些,当浏览器窗口大小已更改的UI将被纠正(因为这迫使UI更新其呈现大小这可以解决该问题),或者如果滚动页面时(这也似乎发出渲染更新到UI)。有谁知道的一种方式来解决这个问题,或者不涉及编写自定义缩放代码解决方法吗?

下面是我用于产生问题的步骤。 (如果您想用我的测试项目让我知道,我可以通过电子邮件发送给您。)

步骤1:创建使用Visual Studio 2008新的Silverlight应用程序。 第2步:在XAML中添加到主网页(XAML在帖子的末尾)。 第3步:运行使用HTML页面,默认启动页面在IE8中的应用。 步骤4:通过使用(Ctrl键+鼠标滚轮)改变缩放级别。您可能直到发生这种情况在第一时间非常迅速地移动鼠标滚轮。通常在随后迅速缩小变焦。 注:第4步之后的UI会有一些我上述的问题。这已经产生上运行IE8 6台不同的机器上。

的文件的MainPage XAML代码:

<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>
有帮助吗?

解决方案

我有同样的问题,在我的情况下, <param name="windowless" value="true" /> 是解决办法。最小值和最大值aren`t该电源线才能正常工作。

其他提示

我去了这个问题Silverlight的论坛,但没有一个人是有问题或不知道如何解决它。我所做的是设定最低高度和宽度上我在HTML页面的控制和在XAML。由于这样的问题,一直没有回来。虽然我仍然不清楚为什么这似乎是一个问题。如果某人具有一个类似的问题请参见下面的示例代码:

#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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top