Visual studio 2008 创建在XAML中具有代码完成的属性或DependencyProperties
我正在尝试创建DependencyProperties,当在VisualStudio的XAML编辑器中使用它们时,它们有一个很好的下拉代码完成 许多默认的SilverLight框架属性都有这样的完成,例如,Visual studio 2008 创建在XAML中具有代码完成的属性或DependencyProperties,visual-studio-2008,silverlight,xaml,silverlight-3.0,dependency-properties,Visual Studio 2008,Silverlight,Xaml,Silverlight 3.0,Dependency Properties,我正在尝试创建DependencyProperties,当在VisualStudio的XAML编辑器中使用它们时,它们有一个很好的下拉代码完成 许多默认的SilverLight框架属性都有这样的完成,例如,Background或BorderBrush。另外,Boolean属性在XAML编辑器中显示True/False选择。这同样适用于DependencyProperties,例如Canvas.Top和Canvas.Left等 我试图定义自己的类型Color或Boolean的DependencyP
Background
或BorderBrush
。另外,Boolean
属性在XAML编辑器中显示True
/False
选择。这同样适用于DependencyProperties,例如Canvas.Top
和Canvas.Left
等
我试图定义自己的类型Color
或Boolean
的DependencyProperties,因为我相信默认类型(如Color、Brush和Boolean)可以免费完成。这并没有发生
我相信我必须为我的属性定义一些注释,但没有找到示例,因为SilverlightSDK只显示Visual Studio中的公共API,而没有显示内部
你有没有想法,如何获得代码完整的属性
更新:下面是我在Silverlight 3中尝试做的一个例子(!)我刚刚和一位同事谈过,他认为问题与Silverlight 3和VS2008中的旧非VS2010-XAML-editor有关
XAML:
<Grid x:Name="LayoutRoot">
<Border test:PropTest.Test="Blue">
<TextBlock Text="123"/>
</Border>
</Grid>
此示例是可编译/可运行的,但我希望使用
dependencProperties
编写API,而不是应用程序,因此我希望API的代码完成。:) 对于已知类型,无需执行任何特殊操作即可获得intellisense帮助。例如画笔
,颜色
或布尔值
。然而,intellisense在VS2008中有点慢,可能需要相当长的时间来构建。即使在内置控件上,它也可能非常温和
如果对象与正在编辑的Xaml位于同一个项目中,请尝试构建该项目
你唯一能做的另一件事就是耐心等待。我刚刚找到了解决方案,至少对于
Color
来说,它现在正在工作。我将尝试用其他类型测试它。我将代码直接放在应用程序中,这首先是一种不好的做法,因为我正在尝试编写API,其次是导致缺少代码完成
上述与财产相关的代码应放入一个单独的库中,并由项目使用该代码引用(例如,一个应用程序)。然后它就开始工作了
接下来,我将尝试编写自己的完成类,类似于
Colors
类型的Colors
类,看看是否可以为自己的类型编写竞赛代码。但这可能是另一个问题。对象是纯依赖对象还是框架元素或控件?它们存在于您在Xaml中使用它们的同一个项目中?我直接在普通页面的C#-文件中编写了上述代码(这是VS-2008生成的导航应用程序的一部分)。
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;
}
}
}