0
我在製作xamarin.forms應用程序。我的項目的一個要求是,焦點輸入不應該彈出系統鍵盤。所以我做了一個自定義條目與本指南:Keyboard disabled guidexamarin.forms - 文本綁定到EntryRenderer
一切工作非常好。但是總會有另外一個問題..
如果我做簡單的綁定:
<local:SoftKeyboardDisabledEntry
Placeholder="Keyboard disabled Entry Control..."
x:Name="SoftKeyboardDisabledEntry"
Text="{Binding TestValue}"/>
但這並沒有反應。(我相信,視圖模型是工作得很好,因爲「正常」的條目工作正常)
所以。 問題是,有沒有辦法使這個領域的綁定?在NewXamarinProject命名空間 在NewXamarinProject.Droid命名空間
[assembly: ExportRenderer(typeof(SoftKeyboardDisabledEntry), typeof(SoftkeyboardDisabledEntryRenderer))]
namespace NewXamarinProject.Droid
{
public class SoftkeyboardDisabledEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
((SoftKeyboardDisabledEntry)e.NewElement).PropertyChanging += OnPropertyChanging;
}
if (e.OldElement != null)
{
((SoftKeyboardDisabledEntry)e.OldElement).PropertyChanging -= OnPropertyChanging;
}
// Disable the Keyboard on Focus
this.Control.ShowSoftInputOnFocus = false;
}
private void OnPropertyChanging(object sender, PropertyChangingEventArgs propertyChangingEventArgs)
{
// Check if the view is about to get Focus
if (propertyChangingEventArgs.PropertyName == VisualElement.IsFocusedProperty.PropertyName)
{
// incase if the focus was moved from another Entry
// Forcefully dismiss the Keyboard
InputMethodManager imm = (InputMethodManager)this.Context.GetSystemService(Context.InputMethodService);
imm.HideSoftInputFromWindow(this.Control.WindowToken, 0);
}
}
}
}
:
自定義輸入的代碼
namespace NewXamarinProject
{
public class SoftKeyboardDisabledEntry : Entry
{
}
}
編輯/解決方案:此代碼工作正常,我做了這個條目再次和它的工作,我不能解釋什麼是壞的。
我將此代碼添加到代碼中,不幸的是,它看起來並不會改變任何內容:/ ..僅實現您的代碼應該影響綁定屬性?還是應該添加其他代碼? –
並且不應該在你的代碼中'TestValue'? –
我發佈的代碼只是覆蓋Entry的Text屬性。休息應該表現得一樣。您可以嘗試將屬性名稱從「文本」更改爲其他名稱,並在XAML中使用該名稱。你也可以在getter/setter中添加一個斷點來查看它是否執行了代碼。也看看OnElementPropertyChanged方法。你可能需要實現它。 –