MediaElementのインスタンスであるmovieオブジェクトがメディアを読み込むよりも前に、スライダーを操作してボリュームを設定した結果として、エラーが起きていると思います。
デバッガで見たら、movie.Volume = の行で停止し、オブジェクトがNullだと思います。
Silverlightでメディアや画像ファイルを使う際に気をつけなければならないのは、XAMLのロードが終わっていてもそれらのファイルの読み込みが終わっていない可能性があることです。
メディアや画像の読み込みは非同期で行われるので、個別にMediaOpenedやImageOpenedのイベントで確認する必要があります。
以下、Silverlight 3のコードで例示します。Silverlight 2でも同様な処理をすればいいだけです。それと、Sliderを(0, 1)の区間で設定すると操作が難しくなるかもしれません。
ポイントは、MediaElementMediaOpenedイベントで正しくメディアが読み込まれていることを確認することです。
MainPage.xaml
<UserControl x:Class="SL3_MediaVolume01.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="Auto" Height="Auto">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions >
<RowDefinition Height="0.9*"/>
<RowDefinition Height="0.1*"/>
</Grid.RowDefinitions>
<MediaElement Grid.Row="0" x:Name="movie" Volume="0.5" Source="Shoe_Circus.wmv"/>
<Slider Grid.Row="1" x:Name="volumeSlider" Value="5" Maximum="10" Minimum="0" ValueChanged="volumeSlider_ValueChanged"/>
</Grid>
</UserControl>
MainPage.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SL3_MediaVolume01
{
public partial class MainPage : UserControl
{
private bool m_MediaOpened = false;
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
movie.MediaOpened += new RoutedEventHandler(movie_MediaOpened);
}
void movie_MediaOpened(object sender, RoutedEventArgs e)
{
m_MediaOpened = true;
}
private void volumeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (m_MediaOpened)
{
movie.Volume = volumeSlider.Value/volumeSlider.Maximum;
}
}
}
}
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。