Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Tasarımcıda belirli bir etkinlik seçildiğinde görüntülenen özellik kılavuzunu özelleştirerek zengin bir düzenleme deneyimi oluşturabilirsiniz. PropertyGridExtensibility örneği bunun nasıl gerçekleştirilebileceğini gösterir.
Gösterir
İş akışı tasarımcısı özellik ızgarası genişletilebilirliği.
Tartışma
Özellik kılavuzunu genişletmek için, geliştiricinin özellik kılavuzu düzenleyicisinin satır içi görünümünü özelleştirme veya daha gelişmiş bir düzenleme yüzeyi için görüntülenen bir iletişim kutusu sağlama seçenekleri vardır. Bu örnekte iki farklı düzenleyici gösterilmiştir; satır içi düzenleyici ve iletişim kutusu düzenleyicisi.
Satır içi düzenleyici
Satır içi düzenleyici örneği aşağıdakileri gösterir:
PropertyValueEditor türünden türetilen bir tür oluşturur.
Oluşturucuda, InlineEditorTemplate değer bir Windows Presentation Foundation (WPF) veri şablonu ile ayarlanır. Bu bir XAML şablonuna bağlanabilir, ancak bu örnekte veri bağlamayı başlatmak için kod kullanılır.
Veri şablonu, özellik kılavuzunda işlenen öğenin PropertyValue ile ilgili veri bağlamına sahiptir. Aşağıdaki kodda (CustomInlineEditor.cs) bu bağlamın
Valueözelliğine bağlandığını unutmayın.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);Etkinlik ve tasarımcı aynı derlemede olduğundan, etkinlik tasarımcısı özniteliklerinin kaydı, SimpleCodeActivity.cs aşağıdaki örnekte gösterildiği gibi etkinliğin statik oluşturucusunda gerçekleştirilir.
static SimpleCodeActivity() { AttributeTableBuilder builder = new AttributeTableBuilder(); builder.AddCustomAttributes(typeof(SimpleCodeActivity), "RepeatCount", new EditorAttribute(typeof(CustomInlineEditor), typeof(PropertyValueEditor))); builder.AddCustomAttributes(typeof(SimpleCodeActivity), "FileName", new EditorAttribute(typeof(FilePickerEditor), typeof(DialogPropertyValueEditor))); MetadataStore.AddAttributeTable(builder.CreateTable()); }
İletişim kutusu düzenleyicisi
İletişim kutusu düzenleyicisi örneği aşağıdakileri gösterir:
DialogPropertyValueEditor türünden türetilen bir tür oluşturur.
InlineEditorTemplate Oluşturucudaki değeri wpf veri şablonuyla ayarlar. Bu, XAML'de oluşturulabilir, ancak bu örnekte kodda oluşturulur.
Veri şablonu, özellik kılavuzunda işlenen öğenin PropertyValue ile ilgili veri bağlamına sahiptir. Aşağıdaki kodda, bu,
Valueözelliğine bağlanır. FilePickerEditor.cs'de iletişim kutusunu açacak olan düğmeyi sağlamak için EditModeSwitchButton'yi de eklemek kritik önem taşır.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;Tasarımcı türündeki ShowDialog yöntemini, iletişim kutusunun görüntülenmesini işlemek için geçersiz kılar. Bu örnekte basit bir FileDialog gösterilmektedir.
public override void ShowDialog(PropertyValue propertyValue, IInputElement commandSource) { Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog(); if (ofd.ShowDialog() == true) { propertyValue.Value = ofd.FileName; } }Etkinlik ve tasarımcı aynı derlemede olduğundan, etkinlik tasarımcısı özniteliklerinin kaydı, SimpleCodeActivity.cs aşağıdaki örnekte gösterildiği gibi etkinliğin statik oluşturucusunda gerçekleştirilir.
static SimpleCodeActivity() { AttributeTableBuilder builder = new AttributeTableBuilder(); builder.AddCustomAttributes(typeof(SimpleCodeActivity), "RepeatCount", new EditorAttribute(typeof(CustomInlineEditor), typeof(PropertyValueEditor))); builder.AddCustomAttributes(typeof(SimpleCodeActivity), "FileName", new EditorAttribute(typeof(FilePickerEditor), typeof(DialogPropertyValueEditor))); MetadataStore.AddAttributeTable(builder.CreateTable()); }
Örneği ayarlamak, derlemek ve çalıştırmak için
Çözümü derleyin ve workflow1.xaml dosyasını açın.
SimpleCodeActivity'yi araç kutusundan tasarımcı tuvaline sürükleyin.
SimpleCodeActivity öğesine tıklayın ve ardından kaydırıcı denetiminin ve dosya çekme denetiminin bulunduğu özellik kılavuzunu açın.