У меня есть производный класс от MediaTransportControls
, и я пытаюсь отключить кнопки предыдущего и следующего трека на основе некоторых событий. Я написал следующее
public class MyMediaTransportControls : MediaTransportControls
{
public static readonly DependencyProperty IsPreviousTrackButtonEnabledProperty = DependencyProperty.Register(
"IsPreviousTrackButtonEnabled", typeof(bool), typeof(MyMediaTransportControls), new PropertyMetadata(false, IsPreviousTrackButtonEnabledChangedCallback));
private static async void IsPreviousTrackButtonEnabledChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var mediaTransportControls = d as MyMediaTransportControls;
if(mediaTransportControls?.GetTemplateChild("PreviousTrackButton") is Button previousTrackButton)
{
await mediaTransportControls.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
previousTrackButton.IsEnabled = (bool)e.NewValue;
});
}
}
public bool IsPreviousTrackButtonEnabled
{
get { return (bool) GetValue(IsPreviousTrackButtonEnabledProperty); }
set { SetValue(IsPreviousTrackButtonEnabledProperty, value); }
}
}
Я использовал привязку данных для привязки IsPreviousTrackButtonEnabled
с помощью логики ViewModel. Тем не менее, я считаю, что даже если установлено значение previousTrackButton.IsEnabled
, это не влияет на пользовательский интерфейс. Иногда, когда отлаживаются, я вижу влияние на пользовательский интерфейс.
Обновление
MediaTransportControls
предоставляет собственный ControlTemplate
, и я не хочу создавать свой собственный шаблон и связывать его с ним.