Мне нужен иметь, близкий кнопка (в данном конкретном случае) налево из Панель навигации, как показано ниже. Мне он нужен только для всплывающих окон, поэтому нет потенциальных проблем с другими элементами / навигациями.
В Google есть несколько предложений по этому поводу, но я видел только примеры iOS (и это не такая уж большая проблема в iOS custom renderer), но нет подсказок, как с этим справиться (с легкостью) с Android.
Чтобы быть ясным, он нужен для определения Xamarin.Forms, подобного этому (или codebehind):
<ContentPage.ToolbarItems>
<ToolbarItem Text = "X" Priority = "-1" Command = "{Binding GoCancel}"/>
<ToolbarItem Icon = "icon_save" Command = "{Binding GoSave}"/>
</ContentPage.ToolbarItems>
Есть предположения?
@hashimks, я не использую какие-либо методы, подобные "PushModal", поскольку я работаю с фреймворком MvvmCross, который обрабатывает все самостоятельно. Итак, это только вопрос компоновки XF.
Я тоже говорю о том же. Вы можете спроектировать верхний слой этой страницы с макетом, содержащим эти крестики и галочки. Вы можете назвать это просто PushModalAsync ... Другой способ - использовать TitleView. Но вы получите эффект навигации вместо всплывающего окна, как анимация.
Вы меня не понимаете. С MvvmCross вы никогда не вызываете (и не должны) ничего, связанного с "PushModal" ...
В Xamarin Forms 3.2 появился новый способ обработки более сложных сценариев с помощью NavigationBar. Он называется TitleView.
С его помощью вы можете вставить любой View, какой захотите, в NavigationBar.
Пример XAML:
<ContentPage xmlns = "http://xamarin.com/schemas/2014/forms"
xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml"
x:Class = "NavigationPageTitleView.TitleViewPage">
<NavigationPage.TitleView>
<Slider HeightRequest = "44" WidthRequest = "300" />
</NavigationPage.TitleView>
...
</ContentPage>
Подробнее об этом здесь https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/hierarchical#displaying-views-in-the-navigation-bar и пример проекта можно найти здесь https://developer.xamarin.com/samples/xamarin-forms/Navigation/TitleView/
Спасибо за ответ. И это решение действительно позволяет легко добавить кнопку. Однако при добавлении туда какого-либо вида он удаляет исходную метку заголовка. Означает ли это, что единственный способ получить заголовок - реализовать собственный (но тогда он будет выглядеть иначе, чем стандартный)?
Кроме того, знаете ли вы, как тогда будет работать привязка? Стандартный {Binding ...} не позволяет выполнять привязку к BindingContext страницы.
В самом деле, добавление настраиваемого представления имеет обратную сторону, заключающуюся в том, что вам нужно будет его «спроектировать» - так что имитируйте внешний вид по умолчанию. И я еще не пробовал настройку контекста привязки, поэтому пока не знаю, почему и как это должно быть сделано ...
Если вам нужен более сложный пример, посмотрите github.com/davidortinau/TheLittleThingsPlayground/blob/…
Ага. Вот как я думал с этим справиться. Но проблема в том, что на разных платформах размер Lable (по крайней мере) может быть разным (не говоря уже о цветах и т. Д.), Поэтому заголовок для этого конкретного вида будет отличаться от других «стандартных». Но в целом ваш ответ решает добавление кнопки простым способом.
Отказаться поздно, но это сработает, добавьте это на страницу, которая будет вызываться в PushModalAsync:
<NavigationPage.TitleView>
<StackLayout Orientation = "Horizontal" VerticalOptions = "Center" Margin = "20,0,0,0" Spacing = "0">
<ImageButton Source = "img.png"
HorizontalOptions = "Start"
Clicked = "BackButton_Clicked"
HeightRequest = "25"
WidthRequest = "25"/>
</StackLayout>
</NavigationPage.TitleView>
Точно такой же ответ над плакатом уже есть полтора года назад!
вы также можете использовать PushModalAsync для всплывающей страницы и создать верхнюю панель на этой странице с изображениями закрытия и отметки. Поскольку вы упомянули об этом как о всплывающем окне, лучше использовать PushModalAsync вместо PushAsync