我需要两个xmlns:local =“clr-namespace”?

问题描述 投票:6回答:3

这是我想在Windows Phone应用程序中使用的设置,在visual studio 2010中使用c#:

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

**MainPage.xaml.cs**       

第一个Namespace是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

- 标记AppSettings在xml名称空间PhoneApp.MyNamespace中不存在。

我想这是因为我没有把

 xmlns:local="clr-namespace:PhoneApp"

但我已经有了

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

并且不能把两者都放在一起。(对我来说,一个被包含在另一个......)我列出所有情节和出情况的原因是因为我在经历这个之后会有其他麻烦。我希望这个消息足够清楚,有人可以帮助我。我花了很多时间才开始放松心情,所以我希望没有愚蠢的错误。当然,我可以添加所需的任何信息。无论如何,谢谢你的阅读!

c# silverlight windows-phone-7 settings xml-namespaces
3个回答
3
投票

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


10
投票

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

xmlns:local="clr-namespace:PhoneApp"

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

<local:MyClassInPhoneAppNamespace/>

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

xmlns:fish="clr-namespace:PhoneApp"

使用方法如下:

<fish:MyClassInPhoneAppNamespace/>

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


0
投票

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

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"
© www.soinside.com 2019 - 2024. All rights reserved.