我正在尝试创建在Visual Studio中的XAML编辑器中使用它们时具有良好下拉代码完成的DependencyProperties。
许多默认的SilverLight框架属性都有这样的完成,例如Background
或BorderBrush
。此外,Boolean
属性会在XAML编辑器中显示True
/ False
选项。对于DependencyProperties也是如此,例如Canvas.Top
和Canvas.Left
等。
我尝试定义自己的Color
或Boolean
类型的DependencyProperties,因为我相信Color,Brush和Boolean等默认类型可以免费完成。这没有发生。
我认为我必须为我的属性定义一些注释,但没有找到示例,因为Silverlight SDK仅在Visual Studio中显示公共API,而不是内部。
您有什么想法,如何让代码完成属性?
更新:以下是我在 SilverLigth 3 (!)中尝试做的一个示例我刚与一位同事交谈,他认为问题出在与VS 2008中的Silverlight 3和旧的非VS2010-XAML编辑器相关。
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;
}
}
}
此示例是可编译/可运行的,但我想使用DependencyProperties
而不是应用程序编写API,因此我想要为我的API编写代码。 :)
答案 0 :(得分:2)
您无需做任何特殊操作即可获得已知类型的智能感知帮助。例如Brush
,Color
或Boolean
。然而,智能感知在VS2008中有点慢,可能需要很长时间才能构建。即使在内置控件上,它也可能非常温和。
如果您的对象在同一个项目中,则您正在编辑的Xaml尝试构建项目。
你唯一能做的就是耐心等待。
答案 1 :(得分:1)
我刚刚找到了解决方案,至少对Color
它现在正在运行。我会尝试用其他类型测试它。我将我的代码直接放入应用程序中,这首先是一种不好的做法,因为我正在尝试编写API,其次,导致代码丢失。
上面与属性相关的代码应该进入单独的库,并由项目使用代码(例如,应用程序)引用。然后它正在运作。
接下来我要尝试的是编写类似于Colors
类的Color
类的自己的完成类,看看我是否可以为自己的类型编写代码。但也许这是另一个问题。