- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
更新:将 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/
我是一名优秀的程序员,十分优秀!