silverlight - 我的 Silverlight 应用程序不显示更改

标签 silverlight prism

这是我第一次使用 SL(但不是 WPF)。我正在学习 PRISM 观看 MTaulty 的精彩视频:http://channel9.msdn.com/blogs/mtaulty/prism--silverlight-part-1-taking-sketched-code-towards-unity

到目前为止一切顺利,我正在处理最后一个视频,并且我正在做他在我的 VS 中所做的相同事情。我正在为 sl4 使用 SL4 & mvc2 web & prism。

我发现了一个问题,但我不知道发生了什么。

我的 SL 应用程序本身没有显示任何变化。我有一个基本的外壳:

<Grid x:Name="LayoutRoot" Background="Azure">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="2*" />
    </Grid.ColumnDefinitions>
    <ctls:GridSplitter Grid.RowSpan="2" HorizontalAlignment="Right"
                       VerticalAlignment="Stretch" Width="2"
                       Background="Black" />
    <ctls:GridSplitter Grid.Column="1"
                       HorizontalAlignment="Stretch" VerticalAlignment="Bottom"
                       Height="2" Background="Black" />

    <Border Background="SkyBlue" CornerRadius="3"
            Margin="5" Grid.RowSpan="2">
        <ContentControl rgn:RegionManager.RegionName="FolderSelectionRegion"
                        HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                        HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" />
    </Border>
    <Border
        Background="SkyBlue"
        CornerRadius="3"
        Margin="5"
        Grid.Column="1">
        <ContentControl
            rgn:RegionManager.RegionName="MailSelectionRegion"
            HorizontalAlignment="Stretch"
            VerticalAlignment="Stretch"
            HorizontalContentAlignment="Stretch"
            VerticalContentAlignment="Stretch" />
    </Border>
</Grid>

问题是,我在第一个 regionManager 中注册了一个 View ,完美,我注册了第二个 View ,但它没有显示...好吧,某处有一些错误...但没有。

我意识到第二个 regionManager 的边框没有显示,好的。我评论了注册 View 的行( View 正在工作)并且 View 仍在显示。我评论了 Bootstrap ,将其从 Application_Startup 中删除,没有任何 View 仍然显示(不可能,我的应用程序无法知道如何执行 Shell,全部被注释掉)。

简而言之,我确定如果我删除了 3 个文件,该应用程序仍在运行...我清理了解决方案,从 ClientBin 中删除了 .xap 文件...没有,该应用程序仍在显示 View 等等。换句话说,该应用并未反射(reflect)代码的变化。

这是怎么回事?

谢谢。

编辑:将近一年后......

所以,从那以后我就没有接触过 Silverlight,但今天我想制作一个非常简单的应用程序(只有一个路径和文本框)并且......是的,我的应用程序开始不显示更改。

我无法重现这个错误,我不知道是什么触发了这个,但我知道这是 ASP.NET MVC 的问题。

我这里说的项目和我今天做的项目都是用ASP.NET MVC来启动SL项目的。

我上传了EmailClient项目(只是我们感兴趣的部分)到我的主机:www.foxandxss.net/stuff/EmailClient.rar

很容易看出问题。首先,您可以看到在 Shell.xaml 中,LayoutRoot 的颜色是 Azure,如果您运行该应用程序,它将是绿色(当我今天打开这个应用程序时,我将它更改为绿色并起作用,但没有更多更改)。如果您将颜色更改为另一种颜色,它并没有改变。如果您转到 App.xaml.cs 并注释创建和运行 Bootstrap 的行(因此该应用程序将不会运行),该应用程序仍会打开。就像正在运行的应用程序是一些缓存,您所做的每一次更改,您都不会看到它。

我尝试从 MVC 项目中删除 xap,但什么也没有。

问题是,如果您右键单击 SL 项目并单击“在浏览器中查看”,您将看到更改(如果您评论了 boostrapper,则为 Azure BG 或什么也没有)但是如果您从 MVC 项目运行它,什么也没有.

最佳答案

过去,我遇到过 XAP 文件缓存问题。如果这是问题所在,我会在 xap 文件路径旁边注入(inject)一个虚拟参数(在本例中为时间戳):

<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
      <param name="source" value="ClientBin/EmailClient.xap?20110712160700"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="4.0.50826.0" />
      <param name="autoUpgrade" value="true" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" 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>

如果您在每次构建时刷新该参数,这应该会使缓存失效并加载最新的 xap 文件。

关于silverlight - 我的 Silverlight 应用程序不显示更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4026444/

相关文章:

Silverlight 自定义类和 Name 属性

vb.net - Silverlight中Prism MVVM的VB.net示例

prism - 如何在 Prism 的 Bootstrap 中获取 RegionManager

silverlight - 使用 MEF Prism 和 Silverlight 按需加载模块

silverlight - 以编程方式使 Silverlight XAP 文件从浏览器缓存中过期

c# - 什么是 List<T> 类?

c# - 事件聚合器模式 : How To Pass Data?

c# - MVVM 绑定(bind)对象的属性

c# - 在 ViewModel 实体上使用 DataAnnotation 进行 Prism IDataErrorInfo 验证

c# - Silverlight 图形像素端位置?