Есть ли контроль выбора недели Silverlight? - PullRequest
1 голос
/ 08 апреля 2010

У нас есть отчет, который сравнивает данные за недели, и кажется, что это исключение, а не правило в мире отчетности.

Я ищу элегантный способ выбора «недели»в элементе управления Silverlight.Я бы предпочел не тратить время на его создание, поэтому было бы неплохо, если бы я купил хорошо отполированный элемент управления, который делает это.способ легко перемещаться через потенциально годами стоит недель.Существуют ли какие-либо элементы управления?Какие-нибудь умные способы использования основных средств управления для достижения нашей цели?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 апреля 2010

Я не знаю ни одного существующего контроля. Однако вы можете попробовать использовать элемент управления календаря с поведением, чтобы перевести выбор в выбор диапазона за всю неделю.

Например:

<sdk:Calendar HorizontalAlignment="Left"
              Margin="8,8,0,120"
              Width="187">
    <i:Interaction.Behaviors>
        <local:SelectWeekBehaviour />
    </i:Interaction.Behaviors>
</sdk:Calendar>

С поведением:

public class SelectWeekBehaviour : Behavior<Calendar>
{
    private void DateChanged(object sender, SelectionChangedEventArgs e)
    {
        UnsubscribeFromSelectionNotifications();

        var selectedDate = AssociatedObject.SelectedDate;

        if (selectedDate.HasValue)
        {
            var dayOfWeek = (int)selectedDate.Value.DayOfWeek;

            var firstDate = selectedDate.Value.AddDays(-dayOfWeek);
            var lastDate = selectedDate.Value.AddDays(6 - dayOfWeek);

            AssociatedObject.SelectedDates.Clear();
            AssociatedObject.SelectedDates.AddRange(firstDate, lastDate);
        }

        SubscribeToSelectionNotifications();
    }

    protected override void OnAttached()
    {
        base.OnAttached();

        AssociatedObject.SelectionMode = CalendarSelectionMode.SingleRange;
        AssociatedObject.FirstDayOfWeek = DayOfWeek.Sunday;

        SubscribeToSelectionNotifications();
    }

    protected override void OnDetaching()
    {
        base.OnDetaching();
        UnsubscribeFromSelectionNotifications();
    }

    private void SubscribeToSelectionNotifications()
    {
        AssociatedObject.SelectedDatesChanged += DateChanged;
    }

    private void UnsubscribeFromSelectionNotifications()
    {
        AssociatedObject.SelectedDatesChanged -= DateChanged;
    }
}

Поведение не совсем готово к работе, так как я заставил неделю начинать работу в воскресенье, чтобы было легче определить начало и конец недели.

0 голосов
/ 08 апреля 2010

Нет, в Silverlight SDK, Toolkit или даже у одного из крупных сторонних поставщиков, на которого я смотрел, нет ни одного.

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