3

我想创建在Visual Studio中的XAML编辑器中使用它们时具有良好的下拉代码完成的DependencyProperties。在XAML中创建具有代码完成的属性或DependencyProperties

许多默认的SilverLight框架属性都具有此类完成,例如BackgroundBorderBrush。此外,Boolean属性显示了XAML编辑器中的True/False选择。这同样适用于DependencyProperties如此,比如Canvas.TopCanvas.Left

我试图定义自己的Color型或Boolean的DependencyProperties,因为我相信,默认类型,如颜色,画笔和布尔可能会完成免费。这没有发生。

我相信我必须为我的属性定义一些注释,但没有找到示例,因为Silverlight SDK只在Visual Studio中显示公共API,而不是内部。

你有一个想法,如何获得代码完成属性?

更新:这里是我试图在SilverLigth做榜样3我刚才谈到的运动课,他认为,这个问题是有关的Silverlight 3和老非(!) VS2010-XAML编辑器在VS 2008

XAML:

<Grid x:Name="LayoutRoot"> 
    <Border test:PropTest.Test="Blue"> 
    <TextBlock Text="123"/> 
    </Border> 
</Grid> 

代码背后

namespace PropTest{ 
    public class PropTest : DependencyObject { 
    public static readonly DependencyProperty TestProperty = DependencyProperty.RegisterAttached(
     "Test", typeof(Color), typeof(PropTest), new PropertyMetadata(Colors.Red)); 

    public static void SetTest(DependencyObject obj, Color color){ 
     (obj as Border).Background = new SolidColorBrush(color); 
    } 
    public static Color GetTest(DependencyObject obj){ 
     return Colors.Red; 
    } 
    } 
} 

这个例子是可编译/可运行的,但我想编写一个API使用DependencyProperties而不是一个应用程序,因此我希望我的API的代码完成。 :)

+1

对象是普通的DependencyObjects或FrameworkElements或Controls?它们存在于您在Xaml中使用它们的同一个项目中? – AnthonyWJones 2010-02-11 11:06:53

+0

我直接在普通页面的C#文件中编写了上面的代码(它是VS-2008生成的导航应用程序的一部分)。 – Juve 2010-02-11 14:23:14

回答

1

我刚刚找到解决方案,至少对于Color它现在工作。我会尝试用其他类型进行测试。我将代码直接放入应用程序中,首先,这是一种不好的做法,因为我正在尝试编写一个API,其次,导致缺少代码完成。

上述属性相关的代码应该进入单独的库并且可以使用代码(例如,应用程序)在项目中引用。然后它正在工作。

我将尝试的下一件事是写我自己的完成类,类似于Color类型的Colors类,看看我是否可以为我自己的类型编写compeltion。但也许这是另一个问题。

2

你不需要做任何特殊的事情来获得已知类型的智能感知帮助。例如BrushColorBoolean。然而,智能感知在VS2008中有点慢,可能需要相当长的时间来构建。即使在内置的控制器上,它也可能非常温和。

如果您的对象与您正在编辑的Xaml处于同一项目中,请尝试构建该项目。

你唯一能做的就是耐心一点。

相关问题