2017-08-17 52 views
2

我有Xamarin形成時間選擇以下自定義渲染IOS如何改變Timepicker的標題和本地化定製渲染

[assembly: ExportRenderer(typeof(TimePicker), typeof(Time24PickerRenderer))] 
namespace LabOraTimeStamp.iOS.Renderers 
{ 
    public class Time24PickerRenderer:TimePickerRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e) 
     { 
      base.OnElementChanged(e); 
      var timePicker = (UIDatePicker)Control.InputView; 
      timePicker.Locale = new NSLocale("no_nb"); 

      //Get the Done button 
      var toolbar = (UIToolbar)Control.InputAccessoryView; 
      var doneBtn = toolbar.Items[1]; 

      //Set the Done to OK 
      doneBtn.Title = "OK"; 
     } 
    } 
} 

我想改變默認的「做」到「確定」。

1)我怎麼能這樣做?上面提到的用於設置標題的行不會影響任何內容。

2)我已經實現了國產化,爲xamarin forms.I只是想利用現有的RESX值從自定義渲染,以顯示適當的culture.How字符串我能做到這一點?

回答

1

那麼,爲什麼你的代碼是不工作的原因是因爲完成按鈕與UIBarButtonSystemItem.Done樣式創建。它不關心Title屬性。 Renderer code here.

要解決這個問題,你可以嘗試更換Xamarin創建完成按鈕與自己的自定義OK按鈕。

//Get the Done button 
var toolbar = (UIToolbar)Control.InputAccessoryView; 

// Replace Xamarin's buttons with custom ones. 
var spacer = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace); 
var doneButton = new UIBarButtonItem(); 
doneButton.Title = "OK"; 
doneButton.Clicked += (o, a) => Control.ResignFirstResponder(); 
toolbar.SetItems(new [] { spacer, doneButton}, false); 
+0

謝謝。它做的工作。正如你所說的,Title屬性在樣式應用時什麼也不做。 – Thabo