gpt4 book ai didi

c# - 如何在 C# Silverlight App 中使字符串值从一个区域访问到另一个区域

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:10 25 4
gpt4 key购买 nike

更新:将 userIP 设置为静态似乎可行。但是,我了解到 MainPage() 在 Application_Startup() 之前执行,因此 InitParam 值不是立即可用的。我可能不得不将我的代码放在其他地方。

我正在编写一个 Silverlight 应用程序并在 InitParams 中接收一个变量,我希望我的代码的其他区域可以通过某种方式访问​​该变量。我不希望立即将值分配给 XAML 中的元素,而是尽可能使用 C#。在使用数据修改 XAML 之前,我必须执行另一个步骤。这是我到目前为止所做的:

在我的 App.xaml.cs 文件中,我向 App 类添加了一个字符串 userIP,希望以后可以访问该值。然后我尝试将 InitParams 变量的值分配给我在上面创建的 userIP 字符串。这是它的样子。

namespace VideoDemo2
{
public partial class App : Application
{
public string userIP;
public App()
{
this.Startup += this.Application_Startup;
this.Exit += this.Application_Exit;
this.UnhandledException += this.Application_UnhandledException;

InitializeComponent();
}

private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new MainPage();
this.userIP = e.InitParams["txtUserIP"];
}
...}

我添加到代码中的唯一行是 public string userIP;this.userIP = e.InitParams["txtUserIP"];。我想知道这是否是解决此问题以便稍后提供此数据的正确方法。

在我的 MainPage.xaml.cs 文件中,我试图引用我之前指定的 userIP 值,但我不知道该怎么做。例如,我想创建一个新字符串,然后将其设置为等于用户 IP:

public MainPage()
{
InitializeComponent();
string myUserIP;
myUserIP = VideoDemo2.App.userIP;
}

然后我收到一条错误消息:错误 1 ​​非静态字段、方法或属性“VideoDemo2.App.userIP”需要对象引用。

我必须对 App.xaml.cs 中的 InitParams 做一些事情,因为这是传递参数的地方,但我想让这些参数之一可供我的应用程序的其他部分使用,而无需如果可能,将其放入 XAML。需要做什么才能让我稍后在应用程序中“看到”该值?我是 C# 的新手,所以非常感谢任何帮助。

最佳答案

FlySwat 和 James Cadd 的回答都很有帮助,但我发现在 Silverlight 中,使用应用程序的资源字典效果最好。

在 ASPX 或 HTML 页面中,使用以下 <param> Silverlight 中的标记 <object>标签:

<param name="initParams" value="txtSomeVariable=SomeValue"/>

然后在 App.xaml.cs 的 Application_Startup 方法中,使用 foreach 循环将值添加到资源字典中:

    private void Application_Startup(object sender, StartupEventArgs e)
{
//Method 1 - Resource Dictionary
if (e.InitParams != null)
{
foreach (var item in e.InitParams)
{
this.Resources.Add(item.Key, item.Value);
}
}
this.RootVisual = new MainPage();
}

要在应用程序的生命周期中从字典中提取值,只需使用:

App.Current.Resources["txtSomeVariable"].ToString();

我从 Tim Heuer 在 Silverlight.Net 上的视频演示了解了 InitParams 和应用程序资源字典:Using Startup Parameters with Silverlight .

此外,我写了一篇博文更详细地描述了这种情况:Pass the IP Address of a User to Silverlight as a Parameter .

我希望这些信息能帮助其他遇到这个问题的用户!

关于c# - 如何在 C# Silverlight App 中使字符串值从一个区域访问到另一个区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1364611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com