Пример #1
0
        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));
        }
Пример #2
0
        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));
        }