2

我有以下代码

public partial class AppDelegate : UIApplicationDelegate
    {
        UINavigationController _navigationController = new UINavigationController();

        public enum PrivacySetting { always, never, friends };

        LogInViewModel _login;

        // This method is invoked when the application has loaded its UI and its ready to run
        public override bool FinishedLaunching (UIApplication app, NSDictionary options)
        {
            // If you have defined a view, add it here:
            // window.AddSubview (navigationController.View);

            _login = new LogInViewModel
            {
                Privacy = PrivacySetting.always
            };

            var _loginbindingcontext = new BindingContext(this, _login, "Login");
            var dialogcontroller = new DialogViewController(_loginbindingcontext.Root);

            _navigationController.PushViewController(dialogcontroller, true);

            window.AddSubview(_navigationController.View);

            window.MakeKeyAndVisible ();

            return true;
        }

        // This method is required in iPhoneOS 3.0
        public override void OnActivated (UIApplication application)
        {
        }

        public class LogInViewModel
        {

            [Section("Credentials")]

            [Entry("Username")]
            public string login;

            [Caption("Password"), Password("Password")]
            public string password;

            [Section("Privacy")]

            [Caption("Show Name")]
            public PrivacySetting Privacy;

            [Section ("Tap to Console")]
            [OnTap ("tapme")]
            public string TapMe;
        }

        public void tapme()
        {
            Console.WriteLine(_login.login);    
        }
    }

我运行应用程序,然后填写文本字段,但是当我点击 TapMe 时,我得到一个空值,那么如何使用 monotouch.dialog 检索文本字段上的值?

4

2 回答 2

4

您需要首先在绑定上下文中调用 Fetch(),如下所示:

public void tapme()
{
            _loginbindingcontext.Fetch();
            Console.WriteLine(_login.login);    
}
于 2011-02-10T01:41:17.533 回答
0
_loginbindingcontext.Fetch();

这将LogInViewModel使用 中元素的值填充DialogViewController

您需要在您的ViewModelfor中保留一个参考,BindingContext以便您可以调用Fetch().

或者,您可以查看我在 GitHub MonoTouch.MVVM 上的项目,它使这些事情变得更容易。它还没有完成,它只是一个概念证明,但我正在积极努力。https://github.com/RobertKozak/MonoTouch.MVVM

于 2011-02-10T01:47:16.780 回答