【问题标题】:Providing a default value for InArgument<T>为 InArgument<T> 提供默认值
【发布时间】:2012-07-25 17:18:07
【问题描述】:

旧的System.ComponentModel 提供了DefaultValueAttribute,当应用于属性时,将其标记为在 Windows 窗体设计器等工具中具有默认值。

在 WPF/Workflow Foundation 世界中是否存在等效属性?以下未按预期工作:

[DefaultValue('|')] // From System.ComponentModel
public InArgument<char> ColumnSeparator { get; set; }

WPF 设计器忽略此属性声明。

【问题讨论】:

    标签: wpf workflow-foundation-4


    【解决方案1】:

    等效于实现IActivityTemplateFactory,并在Create 方法中设置所有默认值。

    您可以让您的 Activity 实现此功能,以减少麻烦和混乱。

    public sealed class MyActivity : NativeActvity, IActivityTemplateFactory
    {
        public Activity Create(DependencyObject target) { /*...*/ }
        // snip
    

    在此方法中进行配置/初始化将帮助您避免在尝试初始化活动时可能遇到的所有奇怪的极端情况。您还可以对该target 执行强制转换,并从设计图面中的工作流状态中获取所需的一切(例如,自动绑定到属性)。

    IActivityTemplateFactory 非常强大。它不仅限于添加单个 Activity。地狱,您可以放入一个完全构建的子组件,可以说是工作流程。它的好东西。

    【讨论】:

      猜你喜欢
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 2014-07-28
      • 1970-01-01
      • 2010-12-20
      • 2019-10-18
      • 1970-01-01
      相关资源
      最近更新 更多