本文将讲解的是WF4属性窗格PropertyGrid扩展,希望对大家了解Windows Workflow Foundation框架有所帮助。
十余年的泰山网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整泰山建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“泰山网站设计”,“泰山网站推广”以来,每个客户项目都认真落实执行。
#T#
1. 我们有一个CaryActivity活动如下:
- namespace CaryPropertyGridExten
- {
- public sealed class CaryActivity : CodeActivity
- {
- public InArgument Text { get; set; }
- public double RepeatCount { get; set; }
- public string FileName { get; set; }
- protected override void Execute(CodeActivityContext context)
- {
- }
- }
- }
2. 上面活动有RepeatCount和FileName属性,我们会为这两个属性在属性窗格的设置自定义属性值编辑器,要达到效果如下图:
3. 分别定义两个属性对应的属性值编辑器如下:
- namespace CaryPropertyGridExten
- {
- class CustomInlineEditor : PropertyValueEditor
- {
- public CustomInlineEditor()
- {
- this.InlineEditorTemplate = 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扩展
本文地址:http://www.csdahua.cn/qtweb/news24/533074.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网