Существует нет способа ущипнуть/масштабировать с помощью встроенных элементов управления Forms со времени этого сообщения. Для этого есть способ, но для этого вам нужно реализовать собственный рендерер.
Я достиг этого в приложении, которое я пишу, создавая класс, который наследуется от Xamarin.Forms.ContentView - PanGestureContainer, который имеет такие свойства, как количество точек касания min/max и событие для прослушивания.
В проекте iOS я создал собственный рендерер для своего представления, где рендер берет свойства из представления и подключает прослушиватели событий касания.
Кроме того, я сделал прикрепляемое свойство (aka Behavior), которое может быть применено к другим представлениям, и когда оно применяется, оно берет представление у его родителя, обертывает его внутри PanGestureRecognizer, а другое прикрепленное свойство действует как обертка слушателя событий таким же образом ,
Это полный хак, но покрывает недостающую функциональность, пока Xamarin не реализует его чисто
Update: теперь с примерами кода, серьезно урезаны, как это было бы слишком много, чтобы отправить, это должно дать вам идея о том, как достичь этого, а это решение для копирования и вставки. Если это похоже на слишком много, возможно, это так, я уверен, что есть лучшие способы, но это делает трюк, пока эта функция не запекается.
public abstract class BaseInteractiveGestureRecognizer : BindableObject, IInteractiveGestureRecognizer
{
public static readonly BindableProperty CommandProperty = BindableProperty.Create<BaseInteractiveGestureRecognizer, ICommand> ((b) => b.Command, null, BindingMode.OneWay, null, null, null, null);
public ICommand Command {
get {
return (ICommand)base.GetValue (BaseInteractiveGestureRecognizer.CommandProperty);
}
set {
base.SetValue (BaseInteractiveGestureRecognizer.CommandProperty, value);
}
}
public object CommandParameter {get;set;} // make bindable as above
public GestureState State { get;set;} // make bindable as above
public View SourceView{ get; set; }
public void Send()
{
if (Command != null && Command.CanExecute (this)) {
Command.Execute (this);
}
}
}
public class PanGesture : BaseInteractiveGestureRecognizer
{
public uint MinTouches { get;set; } // make bindable
public uint MaxTouches { get;set; } // make bindable
// add whatever other properties you need here - starting point, end point, touch count, current touch points etc.
}
А потом в проекте IOS:
public abstract class BaseInteractiveGestureRenderer : BindableObject,IGestureCreator<UIView>
{
public abstract object Create (IInteractiveGestureRecognizer gesture, Element formsView, UIView nativeView);
public static GestureState FromUIGestureState (UIGestureRecognizerState state)
{
switch (state) {
case UIGestureRecognizerState.Possible:
return GestureState.Possible;
case UIGestureRecognizerState.Began:
return GestureState.Began;
case UIGestureRecognizerState.Changed:
return GestureState.Update;
case UIGestureRecognizerState.Ended:
return GestureState.Ended;
case UIGestureRecognizerState.Cancelled:
return GestureState.Cancelled;
case UIGestureRecognizerState.Failed:
return GestureState.Failed;
default:
return GestureState.Failed;
}
}
}
using StatementsHere;
[assembly: ExportGesture (typeof(PanGesture), typeof(PanGestureRenderer))]
namespace YourNamespaceHere.iOS
{
public class PanGestureRenderer : BaseInteractiveGestureRenderer
{
public PanGestureRenderer() : base()
{
}
#region IGestureCreator implementation
public override object Create (IInteractiveGestureRecognizer gesture, Element formsView, UIView nativeView)
{
PanGesture panGesture = gesture as PanGesture;
nativeView.UserInteractionEnabled = true;
UIPanGestureRecognizer panGestureRecognizer = null;
panGestureRecognizer = new UIPanGestureRecognizer (() => panGesture.Send());
}
}
Я хочу что-то вроде этого, но я не могу понять это src = "data: image/png; base64, YourBase64imagestringhere", как я могу добавить статическое изображение Вот ?? Мой путь к изображению «myproject.Images.test.jpg» –
Сначала вам нужно изменить изображение на базовую строку 64, см. Ссылку ниже о том, как это сделать http://stackoverflow.com/questions/21325661/convert-image- путь к base64-строки. Затем вы вводите результат базы 64 (который является очень большой строкой) и поместите его в местозаполнитель, который является вашимBase64imagestringhere в моем коде. вы должны иметь способ передачи данных в html. В моем случае я использую виды Razor из nancy fx. –