【发布时间】:2010-02-10 17:33:29
【问题描述】:
我正在尝试创建 DependencyProperties,当在 Visual Studio 的 XAML 编辑器中使用它们时,它们具有很好的下拉代码完成功能。
许多默认 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 中尝试做的一个示例(!)我刚刚和一位同事谈过,他认为问题出在与 Silverlight 3 和 VS 2008 中旧的非 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 代码完成。 :)
【问题讨论】:
-
对象是普通的 DependencyObjects 或 FrameworkElements 还是 Controls?它们存在于您在 Xaml 中使用它们的同一个项目中?
-
我将上面的代码直接写在一个普通页面的 C# 文件中(它是 VS-2008 生成的导航应用程序的一部分。
标签: visual-studio-2008 silverlight xaml silverlight-3.0 dependency-properties