2015-05-15 3 views
0

Цель состоит в том, чтобы отобразить диалоговое окно для выбора даты при нажатии на EditText.Диалоговое окно отображения обязательной привязки MvvmCross

Я прав, чтобы реализовать привязку, которая будет показывать диалог при нажатии. Код выглядит следующим образом:

public class EditDateBinding : BindingWrapper<EditText, DateTime> 
{ 
    public EditDateBinding(EditText androidControl) : base(androidControl) 
    { 
    } 

    public override void SubscribeToEvents() 
    { 
     Target.Click += InputClick; 
    } 

    private void InputClick(object sender, EventArgs args) 
    { 
     DateTime parsedDate = DateTime.Now; 
     DateTime.TryParse(Target.Text, CultureInfo.CurrentCulture, DateTimeStyles.None, out parsedDate); 

     var dialog = new DatePickerDialogFragment(Target.Context, parsedDate, OnDateSet); 

     dialog.Show(
        // Can't get fragment manager here 
      , "date"); 
    } 

    private void OnDateSet(object sender, DatePickerDialog.DateSetEventArgs e) 
    { 
     SetValueToView(Target, e.Date); 
    } 

    protected override void Dispose(bool isDisposing) 
    { 
     base.Dispose(isDisposing); 
     if (isDisposing) 
     { 
      if (Target != null) 
      { 
       Target.Click -= InputClick; 
      } 
     } 
    } 

    protected override void SetValueToView(EditText androidControl, DateTime value) 
    { 
     androidControl.Text = value.ToShortDateString(); 
    } 
} 

Но я не могу найти способ, чтобы получить FragmentManager экземпляр, чтобы вызвать Show метод конкретизированного диалога. Может ли это быть реализовано в любом случае?

+0

Вообще я стараюсь показать диалог, используя шаблон InteractionRequest - см http://stackoverflow.com/questions/22639808/ для полного объяснения – Stuart

ответ

0

Найден способ ее реализации:

var act = (Activity) Target.Context; 
dialog.Show(act.FragmentManager, "date"); 
Смежные вопросы