Silverlightのカスタムスプラッシュ画面でプログレスバー
-
12-09-2019 - |
質問
どのようにして、カスタムスプラッシュスクリーンで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
メッセージ:不明な要素:プログレスバー
。
のなどの
は、の HTTPで定義された標準的な制御のProgressBarではないです/schemas.microsoft.com/winfx/2006/xaml/presentationする の名前空間?
解決
私は、プログレスバーの存在以来、SL2やSL3を想定している - 。それがSL2に追加しまった。
/のWinFX / 2006 / XAML /プレゼンテーションの名前空間が宣言されていない - しかし、それはどこにある確かSL2 / 3にそれがあります。あなたは、代替 http://schemas.microsoft.com/client/2007 に、このSL1.0のためのレガシー名前空間です。
与えられたコードは動作しますが、私は、ユーザーコントロールとしてルート要素を持たなければならないと名前空間がそこに存在する必要があり、そうでなければユーザーコントロールタグ自体が認識されない再生する。
<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のverison使用されているかって?
他のヒント
、その後、XAMLは、Silverlightの1 + JavaScriptの(非管理XAML)でなければなりません。ここでは、あなたがそれを行う方法は以下のようになります(SilverlightのSDKからの引用<のhref = "HTTP :ここを//msdn.microsoft.com/en-us/library/cc838130(VS.95).aspxの」REL = "nofollowをnoreferrer">)
<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;
}