OnNavigationTo()方法不会更改我的类的属性值

时间:2014-09-04 22:41:33

标签: c# windows-phone

我正在开发一个Windows Phone应用程序,我遇到了确切的问题:

  protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        //Get the arguments as strings and convert them to an enum, is true only when the user enters app for the first time.
        if (NavigationContext.QueryString.ContainsKey("leftDuration"))
        {

            //Get the selected value from IntroductionPage as a string
            var leftRecievedInformation = NavigationContext.QueryString["leftDuration"];

            //Convert the string to an enum object
            var firstRunLeftChosenDuration = (LensLifetime)Enum.Parse(typeof(LensLifetime), leftRecievedInformation);

            //Set the leftDuration value to the model object        
            Model.Left.Lifetime = getDurationAsNumber(firstRunLeftChosenDuration);



        }

这是我的重写方法,我使用QueryString从另一个页面获取一些参数。 getDurationAsNumber()是一个私有方法,它返回一个整数值并且可以正常工作。现在问题是使用此代码不会更改属性Model.Left.Lifetime值。我尝试在构造函数中手动设置其值并完美地工作!什么可能导致问题? 提前致谢!

2 个答案:

答案 0 :(得分:0)

A1。可能你的代码没有运行,即NavigationContext.QueryString.ContainsKey("leftDuration")返回false。使用调试器进行验证。

A2。或者,“值不会改变”可能意味着更改不会被可视化树反映出来。如果在构造函数之后使用数据绑定并更改任何视图模型属性,则必须为这些更改引发相应的事件(如果希望可视树获取这些更改)。通常这意味着实施INotifyPropertyChanged,或者有时足以将ObservableCollection用于您的商品等......

答案 1 :(得分:0)

伙计们感谢大家的帮助,我发现自己遇到了以下问题:我只在MainPage.xaml页面检查了结果,我将值绑定到文本块。问题是我绑定了COSSUCTOR中的ItemSource,所以它采用了默认的0值。现在我在使用queryStrings传递参数后设置了ItemSource,一切正常!感谢您的帮助,这比我想象的要容易,但是第一次在这个平台上,我已经习惯了。