Как я могу сделать динамический слайдер в wpf? - PullRequest
0 голосов
/ 18 февраля 2019

Я работаю над хобби-проектом.Я хотел бы создать простое приложение для медиаплеера, и у меня возникла проблема с одним из моих слайдеров.Я хотел бы сделать его динамическим, чтобы его максимальное значение совпадало с фактической длиной аудиофайла, открытой в моем приложении.

Так что если длина файла first.wav равна 56 секундам, то максимальное значение моего слайдера будетбыть 56.

У меня есть следующее свойство в C #:

    private TimeSpan Duration { get; set; }

Это свойство отвечает за сохранение длины моего фактического аудиофайла.Он инициализируется после просмотра аудио файла.Он хранит правильный номер, поэтому с ним проблем нет.Моя проблема в том, что я не знаю, как правильно привязать его к ползунку.

Это мой ползунок:

    Slider Grid.Column="0" x:Name="SliderForCurrentTime" Minimum="1" Maximum="300" TickFrequency="1" IsMoveToPointEnabled="True" ValueChanged="SliderForCurrentTime_ValueChanged"/>

При воспроизведении аудиофайла я увеличиваю ползунок с каждымотметьте DispatcherTimer, чтобы ползунок всегда «указывал» на позицию моего медиаплеера.Моя частота тиков равна 1, и я бы хотел, чтобы тик соответствовал максимальному значению ползунка, чтобы я мог переходить назад и вперед в аудиофайле, нажимая на ползунок.

Он отлично работает сфиксированное максимальное значение, но это не элегантное решение, я думаю, поэтому я хотел бы сделать его динамичным.Есть идеи?

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете добавить свойство, которое возвращает количество секунд:

public double DurationInSeconds => Duration.TotalSeconds;

В Slider свяжите это свойство с Maximum:

<Slider Minimum="1" Maximum="{Binding DurationInSeconds}" TickFrequency="1" IsMoveToPointEnabled="True" />

В зависимости откак (или когда) вы инициализируете объект, который содержит свойства аудио, вам может потребоваться повысить значение PropertyChanged при изменении свойств, связанных с данными.

Вам также необходимо убедиться, что DataContextползунка (прямо или косвенно) устанавливается для объекта со свойством DurationInSeconds.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...