Как заменить значок SearchBar в пользовательском рендерере Xamarin.Forms для GTK? - PullRequest
1 голос
/ 22 марта 2020

Я работаю над проектом Xamarin, который включает сборку для GTK. Я пытаюсь создать пользовательский рендер для многих элементов управления, но у меня возникают проблемы с поиском, доступом и изменением свойств элемента управления. Например, я хотел бы заменить значок «увеличительное стекло» для элемента управления SearchBar чем-то более похожим на значок по умолчанию на платформе Android.

Я создал пользовательский рендер:

namespace MyProject.GTK.CustomRenderers
{
    public class CustomSearchBarRenderer : Xamarin.Forms.Platform.GTK.Renderers.SearchBarRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
        {
            base.OnElementChanged(e);
            var searchBar = Control;
            // How do I replace the image?
        }
    }
}

но оттуда я в растерянности, так как практически нет ресурсов для пользовательских средств визуализации для GTK. Я попытался просмотреть GTK.Renderers.SearchBarRenderer, чтобы выяснить, содержит ли класс, производный от него, какие-либо полезные свойства или методы, а также попытался найти что-то значимое в документации GTK и репозитории для пакета Xamarin.Forms.GTK. , но безрезультатно. Я просто не совсем уверен, как понять внутреннюю работу элементов управления в этой сборке, поэтому я не могу понять, что мне даже нужно искать. Будем весьма благодарны за любые указатели или ресурсы для этой или любой GTK, специфицированной c для пользовательского рендерера.

1 Ответ

1 голос
/ 24 марта 2020

Вы можете проверить Xamarin Forms GTK

В SearchBar реализовано использование элемента под названием SearchEntry, который использует ImageButton, а значок устанавливается с помощью кода ниже

_searchButton.ImageWidget.Pixbuf = RenderIcon("gtk-find", IconSize.SmallToolbar, null); // Search icon

См.

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

...