C# 在C语言中将参数值从一个函数传递到另一个函数#

C# 在C语言中将参数值从一个函数传递到另一个函数#,c#,visual-studio-2012,windows-8,parameters,parameter-passing,C#,Visual Studio 2012,Windows 8,Parameters,Parameter Passing,以下函数包含一个导航参数,该参数表示从上一页传递的值 protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState) { QuizArgs args = navigationParameter as QuizArgs; var SectorGroups = QuizDataSourc

以下函数包含一个导航参数,该参数表示从上一页传递的值

 protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {

            QuizArgs args = navigationParameter as QuizArgs;
            var SectorGroups = QuizDataSource.GetGroups(args.sector);
            this.DefaultViewModel["Groups"] = SectorGroups;
        }

        void ItemView_ItemClick(object sender, ItemClickEventArgs e)
        {

             var itemId = ((QuizGroups)e.ClickedItem).UniqueId;
            var sectorId = new QuizArgs
            {
                sector = "nav",

                question = 2,
                Total = 0,
                type=itemId
            };


            this.Frame.Navigate(typeof(Quiz), sectorId);


        }
我想使用单击函数中的
LoadState
函数中的
Object-navigationParameter

我想将
扇区
分配给导航参数中的值,而不是字符串“nav”


如何在单击函数中使用参数扇区?

您可以将参数声明为全局参数。这样,参数在这两个函数中都可以访问。

请检查:

    public class YourClass: YourBaseClass
    {
        QuizArgs args = null;
        protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {

            args = navigationParameter as QuizArgs;
            var SectorGroups = QuizDataSource.GetGroups(args.sector);
            this.DefaultViewModel["Groups"] = SectorGroups;
        }

        void ItemView_ItemClick(object sender, ItemClickEventArgs e)
        {
             if(args == null)
                 throw new NullReferenceException();

             var itemId = args.UniqueId;
             var sectorId = new QuizArgs
             {
                 sector = "nav",
                 question = 2,
                 Total = 0,
                 type=itemId
             };


             this.Frame.Navigate(typeof(Quiz), sectorId);


        }
    }
公共类YourClass:YourBaseClass
{
QuizArgs args=null;
受保护的覆盖无效加载状态(对象导航参数,字典页面状态)
{
args=导航参数作为QuizArgs;
var SectorGroups=QuizDataSource.GetGroups(args.sector);
此.DefaultViewModel[“组”]=扇区组;
}
无效项目视图\u项目单击(对象发送者,项目单击事件参数e)
{
如果(args==null)
抛出新的NullReferenceException();
var itemId=args.UniqueId;
var sectorId=新的QuizArgs
{
扇区=“导航”,
问题=2,
总计=0,
类型=项目ID
};
这个.Frame.Navigate(typeof(quick),sectorId);
}
}

我开始键入一个答案,其中QuizArgs作为对象参数保存在表单/页面/任何内容中,但其效果如何实际上取决于您正在编写的UI对象的生命周期。我们能多了解一些背景吗?请看上面的编辑,这有帮助吗?不,没有帮助。他想了解环境。如果是web窗体有一个X方式,如果是windows窗体有另一个方式。@很抱歉,但不是。QuizArgs是什么并不重要,但我想知道包含“LoadState”和“ItemView\u ItemClick”的窗体/页面对象定义。我只是没有使用过Windows8编码;基本情况是,该对象将保存QuizArgs实例,但如果它是另一个UI对象(将保存太长时间,不够长),则可能不是存储它的正确位置。您是指类级别变量吗?整个程序都有一个全局文件。
    public class YourClass: YourBaseClass
    {
        QuizArgs args = null;
        protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {

            args = navigationParameter as QuizArgs;
            var SectorGroups = QuizDataSource.GetGroups(args.sector);
            this.DefaultViewModel["Groups"] = SectorGroups;
        }

        void ItemView_ItemClick(object sender, ItemClickEventArgs e)
        {
             if(args == null)
                 throw new NullReferenceException();

             var itemId = args.UniqueId;
             var sectorId = new QuizArgs
             {
                 sector = "nav",
                 question = 2,
                 Total = 0,
                 type=itemId
             };


             this.Frame.Navigate(typeof(Quiz), sectorId);


        }
    }