【问题标题】:How to make UserControl dependencies required at design/compile time?如何在设计/编译时制作所需的 UserControl 依赖项?
【发布时间】: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”之类的消息,只要该属性尚未设置。

标签: c# wpf xaml


【解决方案1】:

一种可能的解决方案是让控件在其可视区域中呈现错误消息,在设计时提示开发人员这些属性并敦促他为它们分配值。

这种行为的一个示例是 Bing 地图控件,它要求应用程序程序员设置其 CredentialsProvider 属性。只要未设置 CredentialsProvider,地图就会在其中心显示一个带有适当消息的大标签。

与 Bing 地图控件相比,您可以考虑仅在设计时显示此类消息,而在运行时抛出异常。

【讨论】:

    猜你喜欢
    • 2013-08-12
    • 1970-01-01
    • 2011-09-29
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多