【问题标题】:MonoTouch.Dialog cannot get the values on textfieldsMonoTouch.Dialog 无法获取文本字段上的值
【发布时间】:2011-02-10 00:29:50
【问题描述】:

我有以下代码

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 检索文本字段上的值?

【问题讨论】:

  • 该代码是否可以正确编译。_logintapme() 函数中甚至不可用你如何获得登录属性
  • mmmm,会编译因为LogInViewModel _login;它是 AppDelegate 类上的“全局”变量
  • 是的,它可以编译,但我无法获取值,我总是得到一个 Null :(

标签: c# iphone xamarin.ios monotouch.dialog


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    _loginbindingcontext.Fetch();
    

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

    您需要在您的ViewModel 中保留BindingContext 的引用,以便您可以致电Fetch()

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

    【讨论】:

    • 你有没有记录 MVVM 的博客?
    • 还没有。但是我会。在开始记录之前,我还有一些工作要做。设计正在经历一些变化,所以在它稳定之前我不想记录它。我将在接下来的几周内进行重大更新。
    猜你喜欢
    • 2018-09-10
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多