【发布时间】:2011-07-13 07:08:26
【问题描述】:
这是我第一次使用 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 中注册了一个视图,完美,我注册了第二个视图但它没有显示...好吧,某个地方有一些错误...但是没有。
我意识到第二个 regionManager 的边框没有显示出来,好的。我评论了注册视图的行(视图正在工作)并且视图仍在显示。我评论了引导程序,将其从 Application_Startup 中删除,视图仍然没有显示(不可能,我的应用程序无法知道如何执行 Shell,都被注释掉了)。
简而言之,我确定如果我删除 3 个文件,应用程序仍在运行...我清理了解决方案,从 ClientBin 中删除了 .xap 文件...没什么,应用程序仍在显示视图等等。换句话说,应用程序没有反映代码的变化。
发生了什么事?
谢谢。
编辑:将近一年后...
所以,从那以后我就没有接触过 Silverlight,但今天我想做一个非常简单的应用程序(只是一个路径和文本框),然后……是的,我的应用程序开始不显示更改。
我无法重现这个错误,我不知道是什么触发了这个问题,但我知道这是 ASP.NET MVC 的问题。
我这里说的项目,和我今天做的项目,都是用 ASP.NET MVC 来启动 SL 项目的。
我将 EmailClient 项目(只是我们感兴趣的部分)上传到我的主机:www.foxandxss.net/stuff/EmailClient.rar
很容易看出问题。首先,您可以在 Shell.xaml 中看到 LayoutRoot 的颜色是 Azure,如果您运行应用程序,它将是绿色(当我今天打开这个应用程序时,我将其更改为绿色并正常工作,但没有更多更改)。如果您将颜色更改为另一种颜色,它不会改变。如果您转到 App.xaml.cs 并注释创建和运行引导程序的行(因此应用程序不会运行),应用程序仍将打开。就像运行的应用程序是一些缓存,你所做的每一次更改,你都看不到它。
我尝试从 MVC 项目中删除 xap,但什么也没有。
问题是,如果您右键单击 SL 项目并单击“在浏览器中查看”,您将看到更改(Azure BG 或如果您评论了 boostrapper,则什么也没有)但是如果您从 MVC 项目运行它,则什么也没有.
【问题讨论】:
-
如果您自己的更改没有得到反映,真的很难判断发生了什么。尝试使用一个简单的 Shell 和两个区域创建一个新的解决方案。
-
是的,重新开始,来自同一个视频的同一个项目。失败的。又是同样的问题。我不知道是 vs 问题、sl 问题、prism 问题还是视频项目问题。或者我的问题,brrrrr。
-
下载您的应用并运行。除了必须取消阻止并从各种文件中删除只读之外,将颜色更改为红色确实会立即更新。我发现你的项目没有问题。您是否有一套重现步骤来确保我们运行正确的页面?
-
(奇怪的是取消阻止和只读文件)。复制步骤在 EDIT 中,但如果您说这对您有用……这是另一台计算机,发生在其他项目中。您是从 MVC 项目启动应用程序吗? (不是直接从 SL 一开始),尝试至少 3 次更改并从 MVC 执行。怪怪的。谢谢顺便说一句。
-
@Jesus Rodriguez:+1 提供了如此多的细节,但您能否“准确地”描述一下您是如何从 MVC 页面运行 Silverlight 应用程序的。编辑没有那么多细节,从下载的项目中(对我来说)并不明显。
标签: silverlight prism