Невозможно использовать исходный код для устаревшего элемента управления SlidableListItem - PullRequest
0 голосов
/ 28 мая 2020

Microsoft отказалась от SlidableListItem в пользу SwipeControl. Я попробовал SwipeControl с помощью галереи элементов управления XAML - он не позволяет мне смахивать влево и вправо с помощью мыши (я могу использовать SlidableListItem). Я думаю, мне нужно устройство с сенсорным экраном, чтобы он работал.

Поэтому я хотел бы продолжить использование SlidableListItem, несмотря на то, что я обновился до последних пакетов nuget.

Я скопировал код для SlidableListItem в мой проект из ветки WindowsCommunityToolKit 4.0.0. Я получаю эту ошибку sh, когда пытаюсь использовать элемент управления:

System.TypeLoadException: произошел сбой при загрузке типа. \ R \ n в Windows .UI.Xaml.FrameworkElement .MeasureOverride (Size availableSize)

(вчера я успешно скопировал код для HamburgerControl в свой проект.)

1 Ответ

1 голос
/ 29 мая 2020

Я попытался скопировать исходный код SlidableListItem , уделив внимание следующим моментам, я успешно скопировал его:

  1. Если вам не нужно SwipeControl удалите соответствующий код:
    • Не копируйте код SlidableListItemSwipeControlTemplate.xaml
    • Удалите свойства и методы обратного вызова, связанные с UseSwipeControlWhenPossible в SlidableListItem.cs ( например, OnUseSwipeControlWhenPossibleChanged, OnSwipeControlValueChanged, UpdateSwipeControlItems, et c.)
    • В файле SledableListItem.cs есть два места, которые относятся к пути к файлу ресурсов, измените его в соответствии с ваша собственная структура проекта (вы также можете удалить соответствующий код, если SwipeControl не требуется)
  2. Если вы переносите код в свою собственную библиотеку элементов управления, не забудьте ввести SlidableListItem.xaml файл ресурсов в App.xaml
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="ms-appx:///Controls/SlidableListItem.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Но на самом деле SwipeControl - это общий элемент управления, который UWP адаптирует к рабочим привычкам различных платформ. На рабочем столе мы удерживаем левую кнопку мыши, и перетаскивание обычно используется для выполнения операции transfer вместо вызова вторичного меню (обычно мы щелкаем правой кнопкой мыши на рабочем столе).

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

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