【发布时间】:2012-01-31 13:21:05
【问题描述】:
我正在创建一个 UserControl,它公开了一些依赖属性,必须填充这些属性才能使控件正常工作。
当我在 XAML 中使用控件时,我可以为依赖属性提供值。但是如果我没有设置所有值,直到运行时才会显现出来(会抛出异常)。
UserControl 有什么方法可以根据需要标记某些依赖项?如果这是一个普通的 C# 类,我会将其依赖项作为构造函数参数。但我不确定在 WPF/XAML 世界中类似的事情的正确方法是什么。
我们正在使用 .NET 3.5 和 VisualStudio 2008。
【问题讨论】:
-
问得好,但这会是好的设计吗?当我将一个控件从工具箱拖到我的窗口上时,我希望它可以在不需要设置某些属性的情况下工作。我当然可以想象一个控件,该控件在其可视区域中呈现错误/信息消息,直到设置了所有必要的属性。想想在设置 CredentialsProvider 属性之前显示错误的 Bing 地图控件。
-
最好为依赖属性提供默认值
-
@Rachel,如何为 Map.CredentialsProvider 提供默认值?它包含只有应用程序作者才能提供的应用程序特定 ID。
-
有趣。嗯,我们的控件需要和web-service通信,所以它需要传入web-service URL。如果我忘记设置URL,控件在运行时无法工作。有没有更好的设计方法?
-
没有。由于您可能无法为 URL 提供合理的默认值,因此通知开发人员这一事实的一个好方法是呈现诸如“请指定服务器 URL”之类的消息,只要该属性尚未设置。