gpt4 book ai didi

c# - 如何在 silverlight 中的 xaml 和 c# 之间共享数字常量

转载 作者:可可西里 更新时间:2023-11-01 08:39:09 24 4
gpt4 key购买 nike

我是 .NET 编程的新手,正在尝试学习 Silverlight 2/C#。

我需要声明数字常量(或者更好的是,只读变量),并在 XAML 和我的 C# 代码隐藏文件中访问它们。

这些值在 XAML 中定义更合适,但如果需要在 C# 中完成定义,这比在多个地方对值进行硬编码要好。

我找到了 WPF XAML 的解决方案,但 Silverlight 显然不支持语法(我找到的解决方案要求定义在 C# 文件中)。

TIA!

回复迈克尔

我将此回复添加为对我的原始问题的评论,因为评论编辑器不允许我添加这么多文本,而且我找不到其他方式来回复您的回答。

谢谢你的回答,迈克尔,但我似乎无法让它工作。

我从“Pro Silverlight 2 in c# 2008”中的示例开始。该示例运行良好,但需要我在我的 XAML 中的两个位置和我的 C# 中的一个位置硬编码相同的两个值。

我实现了您的解决方案,并且一切正常,但是当我尝试执行代码时,浏览器出现页面错误。我删除了所有更改,并验证一切再次正常运行。

然后我将 xmlns:sys 声明和 sys:Int32 声明添加到我的 App.xaml 文件中。一切再次运行良好,但是当我尝试在 VS2008 中查看 Page.xaml 文件时,出现了一个奇怪的错误:

未声明的前缀 [行:6 位置:30] – Page.xmal,第 1 行,第 1 列

预览页面是空白的。

Page.xaml 的第 6 行第 30 行没有任何有趣的内容,但在 App.xaml 文件中,该位置包含紧接在整数值 8 之前的结束“>”:

  <sys:Int32 x:Key="QAPS">8</sys:Int32>

但是,如果我按 F5,应用程序会在浏览器中正常运行。

我正在运行 VS2008 SP1 和 Mar 09 Silverlight 工具包。

我不明白为什么 App.xaml 应用程序资源部分中的 QAPS 声明可能会导致,特别是考虑到我在应用程序的任何地方都没有引用它。你知道会发生什么吗?

迈克尔的另一个回复

你是对的,我没有将 xmlns:sys 声明添加到我的 Page.xaml,但添加它没有任何区别——我仍然收到“未声明的前缀 [行:6 位置:30]”错误在 Page.xaml 中(应用程序仍在运行)。由于一切运行正常,我想这一定是 VS2008 中的问题。

更大的问题是当我尝试从 C# 访问 QAPS 时遇到运行时异常,我已经弄清楚是我做错了什么导致了它。问题是我显然在资源存在之前访问它。

我已经声明/初始化了一个私有(private)变量来保存类级别的资源值;当我将初始化移至事件处理程序时,问题就消失了。所以我猜测在创建 XAML 资源之前评估 C# 类级别变量。

(顺便说一句,评论的 600 个字符限制真的很痛苦。事实上,我必须编辑我的原始问题才能发表回复)。

最佳答案

将它们放在您的应用程序或页面资源中:

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Application.Resources>
<sys:Int32 x:Key="QPS">8</sys:Int32>
</Application.Resources>
</Application>

然后您可以通过如下代码访问它们:

if (Application.Current.Resources.Contains("QPS"))
{
int callsPerSecond = (int) Application.Current.Resources["QPS"];
}

像这样通过 Xaml

<TextBlock Text="{StaticResource QPS}"/>

关于c# - 如何在 silverlight 中的 xaml 和 c# 之间共享数字常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845577/

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