ProgressBar в пользовательском экране-заставке Silverlight

Как встроить элемент управления 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.
и т. Д.

Разве ProgressBar не является стандартным элементом управления, определенным в схемах http://schemas.microsoft.com/winfx/2006/xaml/presentation?


person t3rse    schedule 07.08.2009    source источник


Ответы (2)


Я предполагаю 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 используется?

person Andrew    schedule 07.08.2009
comment
Помещение его в UserControl в корне было ключом к его работе. Я вставил ваш пример, и он отлично сработал. - person t3rse; 08.08.2009

Если это для свойства 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;
}
person Michael S. Scherotter    schedule 07.08.2009