2014-11-17 3 views
6

내 MVVM 페이지를 XAML에 저장하는 PCL이 있습니다. XAML 파일에 다음과 같은 내용이 있지만 키보드의 자동 완성 기능을 사용하지 않으려합니다. 누구든지 XAML에서이 작업을 수행 할 수있는 방법을 알고 있습니까?Xamarin.Forms에서 자동 완성 사용 안 함 PCL XAML 페이지

<Entry Text="{Binding Code}" Placeholder="Code" /> 

답변

0

양식은 내가이 동작을 제어하기위한 것입니다 가정합니다 KeyboardFlags.Suggestion 열거를 지원하지만 아주 잘 문서화로 표시되지 않습니다. 이미 답있을 동안 나는 내가 XAML에서 사용에 대한 조금 더 정교한 줄 알았는데,

MyEntry.Keyboard = Keyboard.Create(KeyboardFlags.CapitalizeSentence | KeyboardFlags.Spellcheck); 
+1

그것은별로 도움이되지 않습니다. 그것은 .. 'None' 회원으로 보이지 않습니다 .. – benpage

+0

@benpage 문서가 업데이트 된 것으로 보이지 않지만 지금'None' 회원이 있습니다. https://github.com/xamarin/Xamarin.Forms/blob/c1cf72080abbb06571e5a64ef8777c35f7014f0/Xamarin.Forms.Core/KeyboardFlags.cs#L8 –

1

KeyboardFlags은 같은 그것을해야한다.

코드 숨김과 달리 사용할 키보드 클래스의 새 인스턴스를 만들 수는 없지만 방법이 있습니다. 다행히 이미 App.cs를 제거하고 (제거하고 App.xaml 및 App.xaml.cs를 작성), Resources 속성이 아직 초기화되지 않았는지 확인할 필요가 없기를 바랍니다.

다음 단계는 OnStart() 메서드를 재정의하고 사용하는 다양한 키보드에 적절한 항목을 추가하는 것입니다. 저는 보통 숫자, 전자 메일 및 텍스트의 세 가지 키보드를 사용합니다. 또 다른 유용한 키보드는 URL 키보드이지만, 같은 방법으로 추가 할 수 있습니다.

protected override void OnStart() 
{ 
    base.OnStart(); 
    this.Resources.Add("KeyboardEmail", Keyboard.Email); 
    this.Resources.Add("KeyboardText", Keyboard.Text); 
    this.Resources.Add("KeyboardNumeric", Keyboard.Numeric); 
} 

이 작은 코드로 키보드를 정적 리소스로 사용할 수 있습니다. XAML에서 사용하려면 다음을 수행하십시오.

<Entry x:Name="emailEntry" Text="{Binding EMail}" Keyboard="{StaticResource KeyboardEmail}" /> 

그리고 이제는 항목에 전자 메일 키보드가 있습니다.

+0

xaml에서이 작업을 수행 할 수 있습니까? – Julien

+0

어쨌든 그렇습니다. App.OnStart에서 프로그래밍 방식으로 리소스를 만들고 StaticResource로 바인딩하여 바인딩해야합니다. 잠시 후에 답변을 추가하겠습니다. – fonix232

+0

@Julien XAML 만 사용하여 사용자 지정 키보드를 만드는 방법에 대한 내 대답을 참조하십시오. –

1

:

+0

정적 멤버에 대한 리소스를 만들 필요가 없습니다. 'x : Static' 속성에 대한 자세한 내용은 내 대답을 참조하십시오. –

14

Keyboard 특성을 사용하여 XAML에서 인스턴스를 만들 수 있습니다. 당신은 다음과 같은 마크 업을 달성 할 수 원하는 것 :

<Entry Text="{Binding Code}" Placeholder="Code"> 
    <Entry.Keyboard> 
    <Keyboard x:FactoryMethod="Create"> 
     <x:Arguments> 
     <KeyboardFlags>None</KeyboardFlags> 
     </x:Arguments> 
    </Keyboard> 
    </Entry.Keyboard> 
</Entry> 

KeyboardFlags.None는 현장의 모든 특수 키보드 기능을 제거합니다.

<Entry Placeholder="Phone" Keyboard="{x:Static Keyboard.Telephone}" /> 
: 사용자 정의 Keyboard을 필요로하지 않는 경우

<KeyboardFlags>CapitalizeSentence,Spellcheck</KeyboardFlags> 

, 당신은 x:Static 속성을 활용하여 one of the predefined ones를 사용할 수 있습니다

Multiple enums 쉼표로 구분하여 XAML에서 지정할 수 있습니다

+0

이것이 스타일에 통합 될 수 있다면 멋질 것입니다. – wonea