The problem is binding to UIBarButtonItem, the code works on Simulator, but the Enable property does not work on the device, and Clicked Works ...
The same problem exists in textViewItem, but this time neither text nor action works.
public partial class ProcessDetailViewController : MvxBindingTouchViewController<ProcessDetailViewModel> { public ProcessDetailViewController (MvxShowViewModelRequest request) : base (request,"ProcessDetailViewController", null) { } public override void DidReceiveMemoryWarning () { // Releases the view if it doesn't have a superview. base.DidReceiveMemoryWarning (); // Release any cached data, images, etc that aren't in use. } public override void ViewDidLoad () { base.ViewDidLoad (); this.AddBindings( new Dictionary<object, string>() { { this.lblSeguradoraNome , "{'Text':{'Path':'AssuranceCompanyID'}}" }, { this.lblSeguradoraGestor , "{'Text':{'Path':'AssuranceManager'}}" }, { this.lblApoliceData , "{'Text':{'Path':'InsurancePolicyStartDate'}}" }, { this.lblApoliceNum , "{'Text':{'Path':'InsurancePolicyNumber'}}" }, { this.lblApoliceRamo , "{'Text':{'Path':'InsurancePolicyBranch'}}" }, { this.lblDataPedido , "{'Text':{'Path':'RequestDate'}}" }, { this.lblGestor , "{'Text':{'Path':'InternalManager'}}" }, { this.lblLocalRiscoCodPostal , "{'Text':{'Path':'InsurancedLocationAddressCityZipCode'}}" }, { this.lblLocalRiscoConcelho , "{'Text':{'Path':'InsurancedLocationAddressCity'}}" }, { this.lblLocalRiscoMorada , "{'Text':{'Path':'InsurancedLocationAddress'}}" }, { this.lblPerito , "{'Text':{'Path':'Surveyer'}}" }, { this.lblSeguradoCodPostal , "{'Text':{'Path':'InsuredPersonAddressCityZipCode'}}" }, { this.lblSeguradoConcelho , "{'Text':{'Path':'InsuredPersonAddressCity'}}" }, { this.lblSeguradoContacto , "{'Text':{'Path':'InsuredPersonPhone'}}" }, { this.lblSeguradoMorada , "{'Text':{'Path':'InsuredPersonAddress'}}" }, { this.lblSeguradoNome , "{'Text':{'Path':'InsuredPersonName'}}" }, { this.btnDownload , "{'Clicked':{'Path':'DownloadProcessButton'},'Enabled':{'Path':'HideIfDownloaded'}}" }, { this.btnTerminarVisita , "{'Clicked':{'Path':'EndVisitButton'},'Enabled':{'Path':'ShowIfOnVisit'}}" }, { this.btnObterLocalizacao , "{'Clicked':{'Path':'AdquireLocationButton'},'Enabled':{'Path':'ShowIfOnVisit'}}" }, { this.btnIniciarVisita , "{'Clicked':{'Path':'BeginVisitButton'},'Enabled':{'Path':'HideIfOnVisit'}}" }, { this.btnTirarFoto , "{'Clicked':{'Path':'TakePhotoButton'},'Enabled':{'Path':'ShowIfOnVisit'}}" }, { this.btnVoltar , "{'Clicked':{'Path':'ReturnButton'}}" }, { this.btnUpload , "{'Clicked':{'Path':'UploadProcessButton'},'Enabled':{'Path':'CanUpload'}}" }, } ); // var a= NavigationItem.LeftBarButtonItems[0].Enabled // Perform any additional setup after loading the view, typically from a nib. } public override void ViewDidUnload () { base.ViewDidUnload (); // Clear any references to subviews of the main view in order to // allow the Garbage Collector to collect them sooner. // // eg myOutlet.Dispose (); myOutlet = null; ReleaseDesignerOutlets (); } public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation) { // Return true for supported orientations return true; } }
public class ProcessDetailViewModel : ProcessNavigationBaseViewModel {(...)}
public class ProcessNavigationBaseViewModel : BaseViewModel { (...) #region Properties private Process _currentProcess; private static User _user; private bool _isGPSLocationStarted; private double _latitude; private double _longitude; private string _photoFilename = ""; public Process CurrentProcess { get { return _currentProcess; } set { _currentProcess = value; FirePropertyChanged(() => CurrentProcess); } } public User User { get { return _user; } set { _user = value; FirePropertyChanged(() => User); } } private bool _isDownloaded { get { return CurrentProcess.IsLockedInServer && !(CurrentProcess.ProcessState == ProcessState.WaitingReportProduction.ToString()); } set { CurrentProcess.IsLockedInServer = value; FirePropertyChanged(() => ShowIfDownloaded); FirePropertyChanged(() => HideIfDownloaded); } } public bool ShowIfDownloaded { get { return _isDownloaded; } } public bool HideIfDownloaded { get { return !_isDownloaded; } } public bool CanUpload { get { return ( CurrentProcess.ProcessState == ProcessState.WaitingUpload.ToString()); } } public bool CanDownload { get { return (CurrentProcess.ProcessState != ProcessState.WaitingReportProduction.ToString() && CurrentProcess.ProcessState == ProcessState.WaitingSurveyorAcceptionDecision.ToString()) ; } } public bool ShowIfOnVisit { get { return (CurrentProcess.ProcessState == ProcessState.OnVisist.ToString()); } } public bool HideIfOnVisit { get { return (!(CurrentProcess.ProcessState == ProcessState.OnVisist.ToString())) && ShowIfDownloaded; } } public string ProcessDescription { get { return string.Format("{0} - {1}", CurrentProcess.ProcessNumber, CurrentProcess.RequestedService.RequestedServiceType); } } (...) }
Thanks in advance
[EDIT]
Application exit: 2013-01-11 09: 16: 56.369 LinkFENACAMSIGEPMobileUIIPad [6496: c07] Navigation: Diagnostics: 2.24 Go to MainMenuViewModel using args
2013-01-11 09: 16: 56.369 LinkFENACAMSIGEPMobileUIIPad [6496: c07] TouchNavigation: Diagnostics: 2.24 Navigating as requested
2013-01-11 09: 16: 56.421 LinkFENACAMSIGEPMobileUIIPad [6496: c07] MvxBind: Warning: 2.29 Unable to bind null to source
2013-01-11 09: 16: 56.423 LinkFENACAMSIGEPMobileUIIPad [6496: c07] MvxBind: Warning: 2.29 Unable to bind null to source
[EDIT 20130111: 11: 12] - Linker Behavior: SDK Link Assemblies Only
Sidigle: MvvmCross Monotouch - Unable to bind properties on real iPad, but it works on Simulator (I can't do this job ...)