我正在开发一个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
值。我尝试在构造函数中手动设置其值并完美地工作!什么可能导致问题?
提前致谢!
答案 0 :(得分:0)
A1。可能你的代码没有运行,即NavigationContext.QueryString.ContainsKey("leftDuration")
返回false。使用调试器进行验证。
A2。或者,“值不会改变”可能意味着更改不会被可视化树反映出来。如果在构造函数之后使用数据绑定并更改任何视图模型属性,则必须为这些更改引发相应的事件(如果希望可视树获取这些更改)。通常这意味着实施INotifyPropertyChanged
,或者有时足以将ObservableCollection
用于您的商品等......
答案 1 :(得分:0)
伙计们感谢大家的帮助,我发现自己遇到了以下问题:我只在MainPage.xaml
页面检查了结果,我将值绑定到文本块。问题是我绑定了COSSUCTOR中的ItemSource,所以它采用了默认的0值。现在我在使用queryStrings传递参数后设置了ItemSource,一切正常!感谢您的帮助,这比我想象的要容易,但是第一次在这个平台上,我已经习惯了。