【问题标题】:Change Slider's value in XAML throw an exception在 XAML 中更改 Slider 的值会引发异常
【发布时间】:2025-11-27 16:45:02
【问题描述】:

我遇到了 WPF 问题:我想在我的 XAML 中使用带有默认值的滑块,但是当我这样做时,会引发异常:

An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in PresentationFramework.dll

这是我的代码:

<Slider Height="23" HorizontalAlignment="Center" Name="sliderVolume" VerticalAlignment="Top" Width="66" Grid.Row="2" ValueChanged="volume_ValueChanged" Margin="598,35,12,0" Value="100"/>

这是我的代码是 .cs :

private void volume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    mediaElement.Volume = sliderVolume.Value;
}

没有默认值

Value"100"

有效!

【问题讨论】:

  • 也许你应该发布volume_ValueChanged事件代码。
  • private void volume_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) {mediaElement.Volume = sliderVolume.Value;}
  • 您是否尝试过在调试器中启用“第一次机会”异常,以捕捉异常发生的准确时刻? *.com/questions/116896/… 试试这个并用一些额外的细节更新问题。

标签: c# .net wpf xaml exception


【解决方案1】:

我没有看到定义的最小值和最大值。您的“默认”值可能超出范围。

【讨论】:

    【解决方案2】:

    MediaElement volume property 以 0 到 1 之间的线性刻度表示。

    试试:

    mediaElement.Volume = sliderVolume.Value / 10;
    

    【讨论】:

    • 它现在可以工作了,但是没有块 try{} catch{} 每次都会抛出异常。
    • 添加 AbZy 的滑块 Xaml with mediaElement.Volume = sliderVolume.Value;
    • 你能发布内部异常吗?
    【解决方案3】:

    根据MSDN 。允许的最大音量为 1。

    媒体的音量以 0 到 1 之间的线性刻度表示。 默认为 0.5。

    所以你需要像这样设置你的滑块:

    <Slider Value="0.5" Minimum="0" Maximum="1" Height="23" HorizontalAlignment="Center"
    Name="sliderVolume" VerticalAlignment="Top" Width="66" Grid.Row="2"
    ValueChanged="volume_ValueChanged" Margin="598,35,12,0" />
    

    代码:

    private void volume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> args)
          {
             mediaElement.Volume = (double)sliderVolume.Value;
          }
    

    【讨论】:

    • 总是一样,它工作正常,但是抛出异常而不阻塞 try{} catch{}
    • 好的,现在可以正常工作了。在我的 xaml 中,我在滑块之后声明了 mediaElement,因此当我运行我的项目时,mediaElement 为 NULL。很抱歉,非常感谢。
    最近更新 更多