如何扩展WF4属性窗格属性网格

技术如何进行WF4属性窗格PropertyGrid扩展今天就跟大家聊聊有关如何进行WF4属性窗格PropertyGrid扩展,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有

今天跟大家聊聊WF4 PropertyGrid如何扩展,可能很多人都不太懂。为了让大家更好的了解,边肖为大家总结了以下内容,希望大家能从这篇文章中有所收获。

1.我们有一个如下的CaryActivity活动:

namespacrypropertygridexten { public sealed classcaractivity : codeactivity { public inargumenttext { get;设置;} public double repeattcount { get;设置;} publicstringFileName { get设置;} protectedveridevidexecute(codeActivityContextContext){ } } } 2。上述活动中有重复计数和文件名属性。我们将在属性窗格中为这两个属性的设置自定义属性值编辑器。效果如下:

如何进行WF4属性窗格PropertyGrid扩展

3.定义分别对应两个属性的属性值编辑器,如下所示:

namespacrypropertygridexten { classcustominlinneeditor : propertyvalueeditor }

public海关

{

this。InlineEditorTemplatenbsp

;= new DataTemplate();   

  •             FrameworkElementFactory stack = new FrameworkElementFactory(typeof(StackPanel));  

  •             FrameworkElementFactory slider = new FrameworkElementFactory(typeof(Slider));  

  •             Binding sliderBinding = new Binding("Value");  

  •             sliderBinding.Mode = BindingMode.TwoWay;  

  •             slider.SetValue(Slider.MinimumProperty, 0.0);  

  •             slider.SetValue(Slider.MaximumProperty, 100.0);  

  •             slider.SetValue(Slider.ValueProperty, sliderBinding);  

  •             stack.AppendChild(slider);  

  •             FrameworkElementFactory textb = new FrameworkElementFactory(typeof(TextBox));  

  •             Binding textBinding = new Binding("Value");  

  •             textb.SetValue(TextBox.TextProperty, textBinding);  

  •             textb.SetValue(TextBox.IsEnabledProperty, false);  

  •             stack.AppendChild(textb);  

  •             this.InlineEditorTemplate.VisualTree = stack;  

  •         }  

  •     }  

  • }  

  • namespace CaryPropertyGridExten  

  • {  

  •     class FilePickerEditor : DialogPropertyValueEditor  

  •     {  

  •         public FilePickerEditor()  

  •         {  

  •             this.InlineEditorTemplate = new DataTemplate();   

  •             FrameworkElementFactory stack = new FrameworkElementFactory(typeof(StackPanel));  

  •             stack.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);  

  •             FrameworkElementFactory label = new FrameworkElementFactory(typeof(Label));  

  •             Binding labelBinding = new Binding("Value");  

  •             label.SetValue(Label.ContentProperty, labelBinding);  

  •             label.SetValue(Label.MaxWidthProperty, 90.0);  

  •             stack.AppendChild(label);  

  •             FrameworkElementFactory editModeSwitch = new FrameworkElementFactory(typeof(EditModeSwitchButton));  

  •             editModeSwitch.SetValue(EditModeSwitchButton.TargetEditModeProperty, PropertyContainerEditMode.Dialog);  

  •             stack.AppendChild(editModeSwitch);  

  •             this.InlineEditorTemplate.VisualTree = stack;  

  •         }  

  •         public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource)  

  •         {  

  •             Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();  

  •             if (ofd.ShowDialog() == true)  

  •             {  

  •                 propertyValue.Value = ofd.FileName.Substring(ofd.FileName.LastIndexOf('\\') + 1);  

  •             }  

  •         }  

  •     }  

  • }  

  • 4.       在CaryActivity的构造函数中增加自定义属性的信息如下,关于AttributeTableBuilder及MetadataStore的使用可参考关于元数据存储区MetadateStore及AttributeTableBuilder这篇文章。

    public CaryActivity()        {            AttributeTableBuilder builder = new AttributeTableBuilder();

  •           builder.AddCustomAttributes(typeof(CaryActivity), "RepeatCount"new EditorAttribute(typeof(CustomInlineEditor), typeof(PropertyValueEditor)));  

  •           builder.AddCustomAttributes(typeof(CaryActivity), "FileName"new EditorAttribute(typeof(FilePickerEditor), typeof(DialogPropertyValueEditor)));  

  •           MetadataStore.AddAttributeTable(builder.CreateTable());  

  •       }    

  • 看完上述内容,你们对如何进行WF4属性窗格PropertyGrid扩展有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

    内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/152042.html

    (2)

    相关推荐

    • mysql如何修改字段注释

      技术mysql如何修改字段注释这篇文章主要介绍“mysql如何修改字段注释”,在日常操作中,相信很多人在mysql如何修改字段注释问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql如

      攻略 2021年12月1日
    • 土字旁一个于怎么读,一个土字旁一个念什么字

      技术土字旁一个于怎么读,一个土字旁一个念什么字该字是土字旁一个于怎么读:埝。埝 niàn
      基本释义:田里或浅水里用来挡水的土埂:堤~。
      详细释义:
      《名词》:
      田里或浅水里用于挡水的土埂 。
      如:打埝
      淮北盐场交货

      生活 2021年10月26日
    • 华夏文明的三大发源地,中国最早的历史发源于哪里

      技术华夏文明的三大发源地,中国最早的历史发源于哪里以下“中国”作现在中国国境线以内解,简单描绘一下考古学所勾勒出的图景华夏文明的三大发源地:1.从晚更新世之末到全新世之初,华北和长江中下游地区开始开始从狩猎采集向食物生产

      生活 2021年10月22日
    • 容斥问题公式,四个集合的容斥原理公式怎么解决

      技术容斥问题公式,四个集合的容斥原理公式怎么解决用|A|表示集合A的基数,也即集合A中元素的个数。则有|A∪B∪C∪D|=|A|+|B|+|C|+|D|-|A∩B|-|A∩C|-|A∩D|-|B∩C|-|B∩D|-|C∩

      生活 2021年10月26日
    • Mysql怎样查看数据库大小

      技术Mysql怎样查看数据库大小这篇文章给大家介绍Mysql怎样查看数据库大小,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1 命令行进入数据库[root@80 ~]# mysql -uroot -

      攻略 2021年10月25日
    • 羸弱和赢弱区别,踟蹰和踌躇有什么区别

      技术羸弱和赢弱区别,踟蹰和踌躇有什么区别踟蹰和踌躇的区别为:性质不同zhidao羸弱和赢弱区别、侧重点不同、出处不同 一、性质不同
      1、踟蹰:迟疑,要走不走的样子。
      2、踌躇:停留,徘徊不前。
      二、侧重点回不同

      生活 2021年10月27日