2015-04-06 190 views
1

我正在使用.NET WPF的MediaElement播放視頻,並希望視頻在靜音上播放,因此我將音量設置爲0。C#WPF MediaElement.Volume在更改計算機的播放設備時重置

問題是,當我右鍵單擊系統的音頻圖標並選擇「播放設備」並更改默認播放設備時,MediaElement的音量被重置。

我不知道有什麼辦法來檢測系統配置中的這種變化,那麼我該如何解決這個問題呢?

+0

您是否嘗試過使用MediaElement的IsMuted屬性來設置音量? – goobering 2015-04-06 09:00:24

+0

我沒有看到該屬性,但設置IsMuted仍然會出現同樣的問題。切換音頻設備時,也會重置。 – 2015-04-07 04:21:55

回答

0

我認爲你應該能夠通過綁定來擺脫這種情況。你需要在某處實現INotifyPropertyChanged - 我在這裏使用MVVM Light框架,它使用RaisePropertyChanged。

XAML:

<MediaElement IsMuted="{Binding IsMuted}" /> 

代碼隱藏/視圖模型:

/// <summary> 
/// The <see cref="IsMuted" /> property's name. 
/// </summary> 
public const string IsMutedPropertyName = "IsMuted"; 

private bool _isMuted = true; 

/// <summary> 
/// Sets and gets the IsMuted property. 
/// Changes to that property's value raise the PropertyChanged event. 
/// </summary> 
public bool IsMuted 
{ 
    get 
    { 
     return _isMuted; 
    } 

    set 
    { 
     if (_isMuted == value) 
     { 
      return; 
     } 

     //IsMuted will always return true 
     _isMuted = true; 
     RaisePropertyChanged("IsMuted"); 
    } 
} 

小心這一點,並給它一些徹底的測試。我不是100%確定的,我可以保證在你將一個樣本或兩個回放作爲一個非常簡短的回擊之前,它會將關卡拉回到0。