Привязка переменной к возможному объекту набора

Как другие здесь заявили, можно просто использовать полные объекты даты и времени повсюду:

sometime = get_some_time() # the time to which you want to add 3 seconds
later = (datetime.combine(date.today(), sometime) + timedelta(seconds=3)).time()

Однако я думаю, что стоит объяснить, почему требуются полные объекты даты и времени. Рассмотрите то, что произошло бы, если бы я добавил 2 часа к 23:00. Каково корректное поведение? Исключение, потому что у Вас не может быть времени, больше, чем 23:59? Это должно повториться назад?

Различные программисты будут ожидать разные вещи, поэтому какой бы ни результат, который они выбрали, удивит много людей. Хуже все же, программисты записали бы код, который работал просто великолепно, когда они протестировали его первоначально, и затем имейте его, повреждаются позже путем выполнения чего-то неожиданного. Это очень плохо, который является, почему Нельзя добавить, что timedelta возражает против объектов времени.

5
задан Benjamin 6 January 2014 в 17:24
поделиться

3 ответа

почему бы вам не использовать свойство, которое возвращает текущий элемент в коллекции, и не привязать его к вашему элементу управления WPF?

например:

class myCollection
{

    private string _current;

    public string CurrrentField
    {
         get { return _current; }
    }

    // TODO: Set current item to whatever the current item is...
}

EDIT:

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

Сначала заполните коллекцию, затем вы узнаете, сколько элементов у вас в ней, затем с помощью вспомогательного класса прокрутите коллекцию и назначьте элементы свойству, затем перейдите к следующему столбцу вашей сетки и т. Д.

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

0
ответ дан 14 December 2019 в 13:38
поделиться

Да, это возможно. Вы должны реализовать преобразователь привязки, который будет преобразовывать коллекцию в элемент коллекции и принимать индекс в качестве параметра преобразователя. Тогда вы будете использовать его так:

<TextBlock Text="{Binding Fields, 
                  Converter={StaticResource CollectionToItemConverter,
                  ConverterParameter={Binding Pos}}}" />

Если вам нужен код для этого конвертера или дополнительная информация о конвертерах, оставьте комментарий.

Надеюсь, это поможет.

5
ответ дан 14 December 2019 в 13:38
поделиться

попробуйте прочитать в ICollectionView ... это может помочь вам, потому что оно может автоматически дать вам индекс элемента для привязки вашего текста.

1
ответ дан 14 December 2019 в 13:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: