public Button() { InitializeComponent(); VolumeButton.MouseEnter += (sender, args) => { if (!ShowVolumeToolBar) { return; } _temporaryToken?.Cancel(); _temporaryToken = new CancellationTokenSource(); SliderContainer.Visibility = Visibility.Visible; }; VolumeButton.MouseLeave += (sender, args) => { if (!ShowVolumeToolBar) { return; } Task.Run(async delegate { var keep = _temporaryToken; await Task.Delay(TimeSpan.FromMilliseconds(500), keep.Token); Dispatcher.Invoke(delegate { SliderContainer.Visibility = Visibility.Collapsed; }); }); }; if (Mute) { SetButtonVisibility(Muted); } else if (Volume > 0.66) { SetButtonVisibility(VolumeHigh); } else if (Volume > 0.33) { SetButtonVisibility(VolumeMid); } else { SetButtonVisibility(VolumeLow); } VolumeSlider.SetBinding(Slider.VolumeProperty, new Binding("Volume") { Source = this, Mode = BindingMode.TwoWay }); }