2016-12-09 4 views
0

Я пытаюсь познакомиться с Xamarin для создания приложений. Я пытаюсь создать приложение Win8, и я хочу иметь некоторые события, которые запускаются нажатиями клавиш на физической клавиатуре. В WPF вы можете это сделать:Xamarin.Forms - альтернативная альтернатива WPF?

<Window.InputBindings> 
    <KeyBinding Command="{Binding UpCommand}" Key="Up"/> 
    <KeyBinding Command="{Binding DownCommand}" Key="Down"/> 
    <KeyBinding Command="{Binding LeftCommand}" Key="Left"/> 
    <KeyBinding Command="{Binding RightCommand}" Key="Right"/> 
    <KeyBinding Command="{Binding Pause}" Key="Space"/> 
</Window.InputBindings> 

Какая альтернатива этому на странице Xamarin? Спасибо!

+1

Это может звучать как nitpicking, но _Xamarin_ не имеет ничего общего с приложениями Windows 8. Все дело в том, чтобы подключить C# к iOS, Android и macOS. То, что вы, вероятно, имеете в виду, это _Xamarin.Forms_, который представляет собой платформу с кросс-платформой, которая абстрагирует уровень пользовательского интерфейса для платформ iOS, Android и Windows. Если вы хотите создать чистую Win8-приложение, нет необходимости ничего абстрагироваться, у Microsoft есть все, что вам нужно. Возможно, вы захотите обновить свой вопрос: это о X.Forms, или это вопрос о родном приложении Windows? – Krumelur

+0

Это nitpicking. Xamarin предназначен для кросс-платформенной разработки, в которую входят приложения для Windows, iOS и Android (и универсальные приложения для Windows и приложения для Windows Phone). Речь идет о приложении, сделанном с Xamarin, ориентированным на приложение Win8. –

+0

Повторяю то, что я уже писал: вы * не можете * сделать приложение для Windows 8 с Xamarin. Если вы хотите получить ответы, проясните, что вы спрашиваете.Если речь идет о Формах, вы должны пометить их как таковые. – Krumelur

ответ

1

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

Xamarin предлагает два способа написания приложений:

  • Традиционный подход
  • или с использованием Xamarin.Forms

В традиционном подходе вы используете C# (или F #), чтобы привести свой код для iOS, Android или Mac. Это возможно из-за Mono. Вам нужно будет знать специфические для платформы API всех целевых платформ. Вы пишете свои соответствующие компоненты для каждой платформы и повторно используете свою бизнес-логику. Если вы хотите настроить таргетинг на платформы Windows, нет необходимости в каких-либо специфических для Xamarin.

Тогда есть Xamarin.Forms: структура, предоставляемая Xamarin, которая позволяет вам абстрагироваться от слоя пользовательского интерфейса и работать с моделями пользовательского интерфейса и под капотом, он переводит все в специфические для платформы функции. Вам больше не нужно иметь дело с API-интерфейсами платформы. Он также использует Mono для iOS и Android. Тем не менее, он использует Microsoft .NET для таргетинга на Windows Phone, Windows 8 и UWP.

Почему эта разница важна? Потому что это показывает нам, что есть два способа сделать приложение кросс-платформой совместимой. Ваш вопрос касался Win8 и для правильного ответа, какие технологии вы используете. Вы запрашиваете функцию, которая не существует, потому что Xamarin не имеет ничего общего с Win8. Таким образом, один из возможных ответов: вам не нужно использовать Xamarin, вы просто используете инструменты, которые Microsoft предоставляет вам.

Интерпретация комментариев выше, теперь я понимаю, что вы хотите использовать Xamarin.Forms, и вы спрашиваете, что такое XAML-копия KeyBinding. В Формах нет поддержки. Идея Forms заключается в абстрагировании пользовательского интерфейса на всех возможных платформах. У iOS нет клавиатуры, у большинства Android-устройств тоже нет. Это означает, что в вашем случае вам придется использовать проекты, специфичные для платформы, которые используются Forms. Один из них будет проектом Win8, где вы можете использовать именно тот код, который вы изначально разместили. Затем вам нужно будет переслать команды в свой общий код для дальнейшей обработки.

+0

Спасибо за это! Очень признателен. В настоящее время у меня есть переносимый проект для абстракции того, что не зависит от платформы, а затем у меня есть проект UWP, в котором я хочу реализовать специфические элементы UWP (например, элементы управления и представление). Однако этот код НЕ работает (выдает ошибку «Ошибка: свойство attachable« InputBindings »не было найдено в типе« Окно ». \t App1.UWP') в целевом проекте UWP, поэтому мне интересно, что я делать неправильно. –

Смежные вопросы