0

如何将 Silverlight ProgressBar 控件嵌入到自定义初始屏幕中?我将以下内容放入松散的 xaml(为简洁起见):

<Grid xmlns="http://schemas.microsoft.com/client/2007"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
      <ProgressBar />
</Grid>

错误消息如下: 错误:Silverlight 应用程序代码中的未处理错误:2007
类别:ParserError
消息:未知元素:ProgressBar。
ETC

ProgressBar 不是在http://schemas.microsoft.com/winfx/2006/xaml/presentation命名空间中定义的标准控件吗?

4

2 回答 2

0

由于存在进度条,我假设为 SL2 或 SL3 - 它已添加到 SL2 中。

/winfx/2006/xaml/presentation 名称空间未声明 - 但肯定在它所在的 SL2/3 中。您使用了替代http://schemas.microsoft.com/client/2007,这是 SL1.0 的旧命名空间

给出的代码将起作用,但要重现,我必须将根元素作为用户控件,并且名称空间必须驻留在其中,否则无法识别 usercontrol 标记本身。

<UserControl x:Class="myApp.scratchpad"
    xmlns="http://schemas.microsoft.com/client/2007"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
       <ProgressBar />
    </Grid>
</UserControl>

在 SL3 中运行良好。

您能否发布更多页面、根元素、更新对 SL2/3 命名空间的引用并说明正在使用哪个版本的 SL?

于 2009-08-07T15:09:17.510 回答
0

如果这是针对对象标记的 SplashScreenSource 属性,则 XAML 必须是 Silverlight 1+JavaScript(非托管 XAML) 以下是您的操作方法:(取自 Silverlight SDK此处

<Canvas Background="Black" Width="302" Height="52">
    <Rectangle Canvas.Left="1" Canvas.Top="1" Width="300" Height="30" Fill="White"/>
    <Rectangle x:Name="progressBarFill" Canvas.Left="1" Canvas.Top="1" Height="30" Fill="Blue"/>
</Canvas>

然后使用一个 JS 函数来更新进度:

function onProgressChanged(sender, eventArgs)
{
    var slPlugin = sender.getHost();
    slPlugin.content.findName("progressBarFill").width = eventArgs.progress * 300;
}
于 2009-08-07T18:02:25.220 回答