10

这是我希望在 Visual Studio 2010 中使用 c# 为我的 Windows Phone 应用程序进行的设置:

**MainPage.xaml**包含具有附加属性的元素,其值可由用户修改/保存。

**MainPage.xaml.cs**       

第一个命名空间是 PhoneApp ,它内部是一个名为 MyNamespace 的嵌套命名空间,它声明了依赖属性。它有效(谢谢,丹尼尔)

**SettingsSample.xaml**这将允许用户更改MainPage.xaml任何元素的附加属性的值并自动保存更改。

**AppSettings.cs**一个完全重现本教程中第一个清单的类:http: //msdn.microsoft.com/en-us/library/windowsphone/develop/ff769510%28v=vs.105%29.aspx

该页面声明与 MainPage.xaml.cs (PhoneApp) 相同的 NameSpace,然后是一个名为 AppSettings 的公共类,与教程中的完全一样。

为了将所有内容结合在一起,我做了:

**MainPage.xaml**

xmlns:local="clr-namespace:PhoneApp.MyNamespace"

我需要这个来使用附加的属性

<phone:PhoneApplicationPage.Resources>
    <local:AppSettings x:Key="appSettings"></local:AppSettings>
</phone:PhoneApplicationPage.Resources>

混乱开始。在教程中,他们将其放在设置页面上,但我猜是因为他们的设置页面也是包含具有绑定到已保存设置的属性的元素的页面。我的在主页上,所以我把它放在这里。回顾一下,我的设置页面将只使用方法来更改/保存这些值(这些方法在 AppSettings.cs 中)。同样在教程中,他们添加了这个:

xmlns:local="clr-namespace:SettingsSample"

到设置页面(其中“SettingsSample”是包含可保存设置的声明/get-Set 方法的命名空间),但出于同样的原因,我尝试将其放在主页上,但只能完成一个 xmlns:local 声明. 我尝试了几件事将它们一个接一个地放置,但它不起作用。这是我将在下面列出的两个错误的关键。

主页的一些元素有这个,例如:

local:MyClass.Son="{Binding Source={StaticResource appSettings}, Path=son1, Mode=TwoWay}" Style="{StaticResource pad}"

“儿子”是附属物

好的,所以我尝试了不同的不同的东西,但它从来没有奏效。我能得到的最好的结果是在 MainPage.xaml 中它无法创建 AppSettings 的实例。现在不同了,我有两个错误。

- 本地类型:AppSettings 未找到

- xml 命名空间 PhoneApp.MyNamespace 中不存在标签 AppSettings。

我想这是因为我没有把

 xmlns:local="clr-namespace:PhoneApp"

但我已经有了

xmlns:local="clr-namespace:PhoneApp.MyNamespace"

并且不能两者兼而有之。(对我来说,一个包含在另一个中......)我列出所有情况的原因是因为我有点期待在我解决这个问题后会遇到其他麻烦。我希望这个信息足够清楚,有人可以帮助我。我花了这么多时间,我开始失去理智,所以我希望没有愚蠢的错误。当然,我可以添加任何需要的信息。无论如何感谢您的阅读!

4

3 回答 3

13

这些是 XML 名称空间映射。具有以下内容:

xmlns:local="clr-namespace:PhoneApp"

local部分是 XML 命名空间,PhoneApp而是来自您的 .NET 代码的命名空间。有了这个定义,您就可以在 XML 中引用这个命名空间中的类,如下所示:

<local:MyClassInPhoneAppNamespace/>

因为该local部分只是一个名称,您可以将其更改为您喜欢的任何名称:

xmlns:fish="clr-namespace:PhoneApp"

并使用如下:

<fish:MyClassInPhoneAppNamespace/>

这应该意味着您不再有碰撞。

于 2013-02-18T07:34:16.227 回答
7

在这种情况下,“local”只是您引用的命名空间的友好名称。它是完全可以互换的。

于 2013-02-18T07:07:12.303 回答
1

我需要在同一个文件中导入两个本地文件,如下所示

xmlns:local="clr-namespace:Generique.Views.Assets.Entries"
xmlns:local="clr-namespace:Generique.Views.Assets"

我只是更改名称,它工作正常

xmlns:local="clr-namespace:Generique.Views.Assets.Entries"
xmlns:footer="clr-namespace:Generique.Views.Assets"
于 2019-04-24T08:52:10.410 回答