2009-12-29 59 views
2

这实际上是两个问题之一:UserControl XAML中缺少数组元素?

首先,当您编写XAML和智能感知无法识别您想要使用的类型(在我的情况下,Array)时,您会通过哪些步骤来弄清楚什么是继续?我最初查看了我的XML名称空间,以确保一切看起来像它的顺序。如果它是CLR类型(不是我自己的),那么我最终会检查Google(通常找不到我需要的)。

在这种情况下,我的查询是“XAML WPF namespace missing Array”,它告诉我,如我所怀疑的,Array在http://schemas.microsoft.com/winfx/2006/xaml中,但它不显示在Intellisense中。这是为什么?

我看到的所有示例都在窗口或应用程序中,而不是像我的UserControl一样。这与我的问题有关吗?

好的,我想这在技术上有三个问题。 :)

回答

3

我不知道我真的明白你的问题是关于...如果你想在XAML中声明一个数组,请使用x:Array markup extension。数组为Int32的示例:

<UserControl x:Class="YourNamespace.YourClass" 
    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"> 

    <UserControl.Resources> 
     <x:Array x:Key="arrayOfInt32" Type="sys:Int32"> 
      <sys:Int32>4</sys:Int32> 
      <sys:Int32>8</sys:Int32> 
      <sys:Int32>15</sys:Int32> 
      <sys:Int32>16</sys:Int32> 
      <sys:Int32>23</sys:Int32> 
      <sys:Int32>42</sys:Int32> 
     </x:Array> 
    </UserControl.Resources> 

    ... 
+0

我刚刚重新阅读我的问题,并且我意识到我忘了粘贴代码示例。不过,你的就是一个很好的例子。我的问题是,当我键入x:Arr时,“数组”不会显示在智能感知弹出窗口中。我只是得到“ArrayExtension”。这就是说,我只是决定使用x:数组,而且所有东西都还在编译中。那么这是一个智能感知问题?我习惯了它在VC++中不能很好地工作,但在C#开发中,Intellisense从来没有让我失望。 – Dave 2009-12-29 15:42:55

+1

我在VS2008和VS2010中遇到同样的问题。但实际上这不是一个真正的问题:即使您编写x:ArrayExtension,它也应该可以工作。对于标记扩展,可以省略“扩展”后缀 – 2009-12-29 16:28:52