public void AddPlaceHolder() { AddLabel("Place Holder"); var binding = new Binding("PlaceholderKey"); var grid = new Grid(); grid.RowDefinitions.Add(new RowDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); var textBox = new TextBox(); textBox.SetBinding(TextBox.TextProperty, binding); textBox.VerticalAlignment = VerticalAlignment.Center; grid.Children.Add(textBox); textBox.SetValue(Grid.ColumnProperty, 0); var button = new Button { Content = "Browse", Width = 75, Height = 23, Margin = new Thickness(2, 0, 0, 0) }; button.Click += delegate { var container = RenderingItem.RenderingContainer; if (container == null) { return; } var key = RenderingItem.PlaceholderKey.ToString(); var dialog = new PlaceholderDialog(); dialog.Initialize(Resources.Browse, key, container); if (AppHost.Shell.ShowDialog(dialog) != true) { return; } RenderingItem.PlaceholderKey = new PlaceHolderKey(dialog.SelectedValue); UpdateTarget(); }; grid.Children.Add(button); button.SetValue(Grid.ColumnProperty, 1); Grid.Children.Add(grid); bindings.Add(BindingOperations.GetBindingExpressionBase(textBox, TextBox.TextProperty)); }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { Assert.ArgumentNotNull(context, nameof(context)); Assert.ArgumentNotNull(provider, nameof(provider)); var instance = context.Instance; if (instance == null) { return(value); } IEnumerable <RenderingItem> renderingItems = null; var renderingItem = instance as RenderingItem; if (renderingItem != null) { renderingItems = new[] { renderingItem }; } var objects = instance as object[]; if (objects != null) { renderingItems = objects.OfType <RenderingItem>(); } if (renderingItems == null || !renderingItems.Any()) { return(value); } var container = renderingItems.First().RenderingContainer; if (container == null) { return(value); } var key = string.Empty; var placeHolderKey = value as PlaceHolderKey; if (placeHolderKey != null) { key = placeHolderKey.Key ?? string.Empty; } var dialog = new PlaceholderDialog(); dialog.Initialize(Resources.Browse, key, container); if (AppHost.Shell.ShowDialog(dialog) != true) { return(value); } return(new PlaceHolderKey(dialog.SelectedValue)); }