C# 为什么在启动时调用ValueChanged

C# 为什么在启动时调用ValueChanged,c#,windows-phone-8,C#,Windows Phone 8,我仍然习惯于windows phone环境,所以我会边走边用谷歌搜索。我已经在某件事情上坚持了几天,我休息一下,做点别的事情,然后回来做。 由于nullpointerexepctions,我的应用程序在打开时会崩溃。弹出此对话框的代码位于一个函数中,该函数仅在滑块更改时运行 功能是 private void changeVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)

我仍然习惯于windows phone环境,所以我会边走边用谷歌搜索。我已经在某件事情上坚持了几天,我休息一下,做点别的事情,然后回来做。 由于nullpointerexepctions,我的应用程序在打开时会崩溃。弹出此对话框的代码位于一个函数中,该函数仅在滑块更改时运行

功能是

    private void changeVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        myMediaElement.Volume = (double)changeVolume.Value;
    }
private void changeVolume\u值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
myMediaElement.Volume=(双精度)changeVolume.Value;
}

它提出了myMediaElement作为问题,表示它为null。如果我的断点超过这个值,一切正常。有没有办法阻止在打开时调用此函数?

只需先检查null:

private void changeVolume_ValueChanged(object sender, 
    RoutedPropertyChangedEventArgs<double> e)
{
    if (myMediaElement != null) myMediaElement.Volume = (double)changeVolume.Value;
}
private void changeVolume\u value已更改(对象发送方,
RoutedPropertyChangedEventArgs(e)
{
如果(myMediaElement!=null)myMediaElement.Volume=(双精度)changeVolume.Value;
}

只需先检查空值:

private void changeVolume_ValueChanged(object sender, 
    RoutedPropertyChangedEventArgs<double> e)
{
    if (myMediaElement != null) myMediaElement.Volume = (double)changeVolume.Value;
}
private void changeVolume\u value已更改(对象发送方,
RoutedPropertyChangedEventArgs(e)
{
如果(myMediaElement!=null)myMediaElement.Volume=(双精度)changeVolume.Value;
}

只需先检查空值:

private void changeVolume_ValueChanged(object sender, 
    RoutedPropertyChangedEventArgs<double> e)
{
    if (myMediaElement != null) myMediaElement.Volume = (double)changeVolume.Value;
}
private void changeVolume\u value已更改(对象发送方,
RoutedPropertyChangedEventArgs(e)
{
如果(myMediaElement!=null)myMediaElement.Volume=(双精度)changeVolume.Value;
}

只需先检查空值:

private void changeVolume_ValueChanged(object sender, 
    RoutedPropertyChangedEventArgs<double> e)
{
    if (myMediaElement != null) myMediaElement.Volume = (double)changeVolume.Value;
}
private void changeVolume\u value已更改(对象发送方,
RoutedPropertyChangedEventArgs(e)
{
如果(myMediaElement!=null)myMediaElement.Volume=(双精度)changeVolume.Value;
}

您很可能在构建UI时遇到此事件。如果您在XAML中附加了
changeVolume\u value changed
,则任何随机组件都很可能尚未出现。例如,
myMediaElement
可以为null(即,因为它在XAML中定义得更深入,所以您可以
changeVolume
)等等

最简单的是,只需添加空检查:

private void changeVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    if(myMediaElement != null)
        myMediaElement.Volume = (double)changeVolume.Value;
}
private void changeVolume\u值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
if(myMediaElement!=null)
myMediaElement.Volume=(双精度)changeVolume.Value;
}
(顺便说一句,
changeVolume
不会为空,因为它是它的处理程序)


更复杂的解决方案是仅在整个UI初始化之后注册该处理程序。但是,如果您使用模板,它可能会变得复杂,我认为在这里不值得这样做。

很可能您在构建UI时遇到了此事件。如果您在XAML中附加了
changeVolume\u value changed
,则任何随机组件都很可能尚未出现。例如,
myMediaElement
可以为null(即,因为它在XAML中定义得更深入,所以您可以
changeVolume
)等等

最简单的是,只需添加空检查:

private void changeVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    if(myMediaElement != null)
        myMediaElement.Volume = (double)changeVolume.Value;
}
private void changeVolume\u值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
if(myMediaElement!=null)
myMediaElement.Volume=(双精度)changeVolume.Value;
}
(顺便说一句,
changeVolume
不会为空,因为它是它的处理程序)


更复杂的解决方案是仅在整个UI初始化之后注册该处理程序。但是,如果您使用模板,它可能会变得复杂,我认为在这里不值得这样做。

很可能您在构建UI时遇到了此事件。如果您在XAML中附加了
changeVolume\u value changed
,则任何随机组件都很可能尚未出现。例如,
myMediaElement
可以为null(即,因为它在XAML中定义得更深入,所以您可以
changeVolume
)等等

最简单的是,只需添加空检查:

private void changeVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    if(myMediaElement != null)
        myMediaElement.Volume = (double)changeVolume.Value;
}
private void changeVolume\u值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
if(myMediaElement!=null)
myMediaElement.Volume=(双精度)changeVolume.Value;
}
(顺便说一句,
changeVolume
不会为空,因为它是它的处理程序)


更复杂的解决方案是仅在整个UI初始化之后注册该处理程序。但是,如果您使用模板,它可能会变得复杂,我认为在这里不值得这样做。

很可能您在构建UI时遇到了此事件。如果您在XAML中附加了
changeVolume\u value changed
,则任何随机组件都很可能尚未出现。例如,
myMediaElement
可以为null(即,因为它在XAML中定义得更深入,所以您可以
changeVolume
)等等

最简单的是,只需添加空检查:

private void changeVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    if(myMediaElement != null)
        myMediaElement.Volume = (double)changeVolume.Value;
}
private void changeVolume\u值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
if(myMediaElement!=null)
myMediaElement.Volume=(双精度)changeVolume.Value;
}
(顺便说一句,
changeVolume
不会为空,因为它是它的处理程序)


更复杂的解决方案是仅在整个UI初始化之后注册该处理程序。但是,如果您使用模板,它可能会变得复杂,我认为这真的不值得。

添加更多代码:媒体元素变量的实例化位置和方式?我不知道为什么会调用它-可能您正在设置初始值并触发它?-但一个简单的解决方法是,在尝试更改
卷之前,只需检查
if(myMediaElement!=null)
,然后添加更多代码:在哪里以及如何实例化媒体元素变量?我不知道为什么会调用它-也许您正在设置初始值并触发它但一个简单的解决方法是,在尝试更改
卷之前,只需检查
if(myMediaElement!=null)
,然后添加更多代码:在哪里以及如何实例化媒体元素变量?我不知道