diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs
index 772bb1a180..efbcc2d76a 100644
--- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs
+++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/AbstractDesignerGenerator.cs
@@ -457,30 +457,6 @@ namespace ICSharpCode.FormsDesigner
return compatibleMethods;
}
- public virtual ICollection GetCompatibleMethods(EventInfo edesc)
- {
- Reparse();
- ArrayList compatibleMethods = new ArrayList();
- MethodInfo methodInfo = edesc.GetAddMethod();
- ParameterInfo pInfo = methodInfo.GetParameters()[0];
- string eventName = pInfo.ParameterType.ToString().Replace("EventHandler", "EventArgs");
-
- foreach (IMethod method in completeClass.Methods) {
- if (method.Parameters.Count == 2) {
- bool found = true;
-
- IParameter p = method.Parameters[1];
- if (p.ReturnType.FullyQualifiedName != eventName) {
- found = false;
- }
- if (found) {
- compatibleMethods.Add(method.Name);
- }
- }
- }
- return compatibleMethods;
- }
-
protected IField GetField(IClass c, string name)
{
foreach (IField field in c.Fields) {
diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/IDesignerGenerator.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/IDesignerGenerator.cs
index 82147aeeb4..d30c85173e 100644
--- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/IDesignerGenerator.cs
+++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerGenerator/IDesignerGenerator.cs
@@ -24,6 +24,5 @@ namespace ICSharpCode.FormsDesigner
void MergeFormChanges(CodeCompileUnit unit);
bool InsertComponentEvent(IComponent component, EventDescriptor edesc, string eventMethodName, string body, out string file, out int position);
ICollection GetCompatibleMethods(EventDescriptor edesc);
- ICollection GetCompatibleMethods(EventInfo edesc);
}
}
diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
index d19c2275ff..d7f2aecf2c 100644
--- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
+++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
@@ -337,11 +337,6 @@ namespace ICSharpCode.FormsDesigner
return generator.GetCompatibleMethods(edesc);
}
- public ICollection GetCompatibleMethods(EventInfo edesc)
- {
- return generator.GetCompatibleMethods(edesc);
- }
-
/*
protected override void OnViewActivated(EventArgs e)
{
diff --git a/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/EventHandlerService.cs b/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/EventHandlerService.cs
new file mode 100644
index 0000000000..c4ff83c607
--- /dev/null
+++ b/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/EventHandlerService.cs
@@ -0,0 +1,62 @@
+//
+//
+//
+//
+// $Revision: 2667$
+//
+
+using System;
+using System.ComponentModel;
+using System.Windows;
+using System.Windows.Controls;
+using ICSharpCode.WpfDesign;
+
+namespace StandaloneDesigner
+{
+ sealed class EventHandlerService : IEventHandlerService
+ {
+ Window1 mainWindow;
+
+ public EventHandlerService(Window1 mainWindow)
+ {
+ this.mainWindow = mainWindow;
+ }
+
+ public void CreateEventHandler(DesignItem item, DesignItemProperty eventProperty)
+ {
+ string handlerName = (string)eventProperty.ValueOnInstance;
+ if (string.IsNullOrEmpty(handlerName)) {
+ if (string.IsNullOrEmpty(item.Name)) {
+ // cannot create event for unnamed controls
+ if (mainWindow.propertyEditor.NameTextBox.Focus()) {
+ IErrorService errorService = item.Context.Services.GetService();
+ if (errorService != null) {
+ Label errorLabel = new Label();
+ errorLabel.Content = "You need to give the " + item.ComponentType.Name + " a name.";
+ errorService.ShowErrorTooltip(mainWindow.propertyEditor.NameTextBox, errorLabel);
+ }
+ }
+ return;
+ }
+
+ handlerName = item.Name + eventProperty.Name;
+ eventProperty.SetValue(handlerName);
+ }
+
+ MessageBox.Show("show " + handlerName);
+ }
+
+ public DesignItemProperty GetDefaultEvent(DesignItem item)
+ {
+ object[] attributes = item.ComponentType.GetCustomAttributes(typeof(DefaultEventAttribute), true);
+ if (attributes.Length == 1) {
+ DefaultEventAttribute dae = (DefaultEventAttribute)attributes[0];
+ DesignItemProperty property = item.Properties.GetProperty(dae.Name);
+ if (property != null && property.IsEvent) {
+ return property;
+ }
+ }
+ return null;
+ }
+ }
+}
diff --git a/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/StandaloneDesigner.csproj b/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/StandaloneDesigner.csproj
index 948580cdde..ffc74677a5 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/StandaloneDesigner.csproj
+++ b/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/StandaloneDesigner.csproj
@@ -48,6 +48,7 @@
App.xaml
+
Code
diff --git a/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml b/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml
index eda336f9b5..eef982e153 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml
+++ b/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml
@@ -1,5 +1,5 @@
diff --git a/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml.cs b/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml.cs
index 79eb549b12..ac3f009c12 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/StandaloneDesigner/Window1.xaml.cs
@@ -8,6 +8,7 @@ using System.Xml;
using ICSharpCode.WpfDesign;
using ICSharpCode.WpfDesign.Designer;
+using ICSharpCode.WpfDesign.Designer.Xaml;
using ICSharpCode.WpfDesign.PropertyEditor;
using System.Threading;
using System.Windows.Threading;
@@ -41,7 +42,13 @@ namespace StandaloneDesigner
{
if (e.Source != tabControl) return;
if (tabControl.SelectedItem == designTab) {
- designSurface.LoadDesigner(new XmlTextReader(new StringReader(CodeTextBox.Text)), null);
+ XamlLoadSettings settings = new XamlLoadSettings();
+ settings.CustomServiceRegisterFunctions.Add(
+ delegate(XamlDesignContext context) {
+ context.Services.AddService(typeof(IEventHandlerService), new EventHandlerService(this));
+ });
+
+ designSurface.LoadDesigner(new XmlTextReader(new StringReader(CodeTextBox.Text)), settings);
designSurface.DesignContext.Services.Selection.SelectionChanged += OnSelectionChanged;
toolbox.ToolService = designSurface.DesignContext.Services.Tool;
} else {
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/EventHandlerService.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/EventHandlerService.cs
new file mode 100644
index 0000000000..55e4f53a8b
--- /dev/null
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/EventHandlerService.cs
@@ -0,0 +1,89 @@
+//
+//
+//
+//
+// $Revision: 2667$
+//
+
+using System;
+using System.ComponentModel;
+using ICSharpCode.SharpDevelop;
+using ICSharpCode.SharpDevelop.Project;
+using ICSharpCode.SharpDevelop.Dom;
+using ICSharpCode.Core;
+using System.Windows.Controls;
+
+namespace ICSharpCode.WpfDesign.AddIn
+{
+ sealed class EventHandlerService : IEventHandlerService
+ {
+ WpfViewContent viewContent;
+
+ public EventHandlerService(WpfViewContent viewContent)
+ {
+ if (viewContent == null)
+ throw new ArgumentNullException("viewContent");
+ this.viewContent = viewContent;
+ }
+
+ IProjectContent GetProjectContent()
+ {
+ IProject p = ProjectService.OpenSolution.FindProjectContainingFile(viewContent.PrimaryFileName);
+ if (p != null)
+ return ParserService.GetProjectContent(p) ?? ParserService.DefaultProjectContent;
+ else
+ return ParserService.DefaultProjectContent;
+ }
+
+ public void CreateEventHandler(DesignItem item, DesignItemProperty eventProperty)
+ {
+ /*Designer.Xaml.XamlDesignContext xamlContext = item.Context as Designer.Xaml.XamlDesignContext;
+ if (xamlContext != null) {
+ string className = xamlContext.ClassName;
+ if (!string.IsNullOrEmpty(className)) {
+ IClass c = GetProjectContent().GetClass(className, 0);
+ if (c != null && !string.IsNullOrEmpty(c.CompilationUnit.FileName)) {
+
+ }
+ }
+ }
+
+ return;
+ */
+
+ string handlerName = (string)eventProperty.ValueOnInstance;
+ if (string.IsNullOrEmpty(handlerName)) {
+ if (string.IsNullOrEmpty(item.Name)) {
+ // cannot create event for unnamed controls
+ if (viewContent.PropertyEditor.NameTextBox.Focus()) {
+ IErrorService errorService = item.Context.Services.GetService();
+ if (errorService != null) {
+ Label errorLabel = new Label();
+ errorLabel.Content = "You need to give the " + item.ComponentType.Name + " a name.";
+ errorService.ShowErrorTooltip(viewContent.PropertyEditor.NameTextBox, errorLabel);
+ }
+ }
+ return;
+ }
+
+ handlerName = item.Name + eventProperty.Name;
+ eventProperty.SetValue(handlerName);
+ }
+
+ //viewContent.PrimaryFileName + ".cs"
+ }
+
+ public DesignItemProperty GetDefaultEvent(DesignItem item)
+ {
+ object[] attributes = item.ComponentType.GetCustomAttributes(typeof(DefaultEventAttribute), true);
+ if (attributes.Length == 1) {
+ DefaultEventAttribute dae = (DefaultEventAttribute)attributes[0];
+ DesignItemProperty property = item.Properties.GetProperty(dae.Name);
+ if (property != null && property.IsEvent) {
+ return property;
+ }
+ }
+ return null;
+ }
+ }
+}
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfAndWinFormsTopLevelWindowService.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfAndWinFormsTopLevelWindowService.cs
new file mode 100644
index 0000000000..6c102df669
--- /dev/null
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfAndWinFormsTopLevelWindowService.cs
@@ -0,0 +1,77 @@
+//
+//
+//
+//
+// $Revision: 2667$
+//
+
+using System;
+using System.Windows;
+using System.Windows.Forms;
+using System.Windows.Interop;
+using System.Windows.Media;
+
+namespace ICSharpCode.WpfDesign.AddIn
+{
+ sealed class WpfAndWinFormsTopLevelWindowService : ITopLevelWindowService
+ {
+ public ITopLevelWindow GetTopLevelWindow(UIElement element)
+ {
+ Window window = Window.GetWindow(element);
+ if (window != null) {
+ return new WpfTopLevelWindow(window);
+ }
+ HwndSource hwndSource = PresentationSource.FromVisual(element) as HwndSource;
+ if (hwndSource != null) {
+ Control ctl = Control.FromChildHandle(hwndSource.Handle);
+ if (ctl != null) {
+ Form form = ctl.FindForm();
+ if (form != null) {
+ return new WindowsFormsTopLevelWindow(form);
+ }
+ }
+ }
+ return null;
+ }
+
+ sealed class WpfTopLevelWindow : ITopLevelWindow
+ {
+ Window window;
+
+ public WpfTopLevelWindow(Window window)
+ {
+ this.window = window;
+ }
+
+ public void SetOwner(Window child)
+ {
+ child.Owner = window;
+ }
+
+ public bool Activate()
+ {
+ return window.Activate();
+ }
+ }
+
+ sealed class WindowsFormsTopLevelWindow : ITopLevelWindow
+ {
+ Form form;
+
+ public WindowsFormsTopLevelWindow(Form form)
+ {
+ this.form = form;
+ }
+
+ public void SetOwner(Window child)
+ {
+ (new WindowInteropHelper(child)).Owner = form.Handle;
+ }
+
+ public bool Activate()
+ {
+ return form.Focus();
+ }
+ }
+ }
+}
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs
index d12a8d9a0f..36f00bb2ed 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs
@@ -34,6 +34,7 @@ namespace ICSharpCode.WpfDesign.AddIn
public WpfViewContent(OpenedFile file) : base(file)
{
this.TabPageText = "${res:FormsDesigner.DesignTabPages.DesignTabPage}";
+ this.IsActiveViewContentChanged += OnIsActiveViewContentChanged;
}
protected override void LoadInternal(OpenedFile file, System.IO.Stream stream)
@@ -53,12 +54,14 @@ namespace ICSharpCode.WpfDesign.AddIn
settings.CustomServiceRegisterFunctions.Add(
delegate(XamlDesignContext context) {
context.Services.AddService(typeof(IUriContext), new FileUriContext(this.PrimaryFile));
+ context.Services.AddService(typeof(IPropertyDescriptionService), new PropertyDescriptionService(this.PrimaryFile));
+ context.Services.AddService(typeof(IEventHandlerService), new EventHandlerService(this));
+ context.Services.AddService(typeof(ITopLevelWindowService), new WpfAndWinFormsTopLevelWindowService());
});
settings.TypeFinder = MyTypeFinder.Create(this.PrimaryFile);
designer.LoadDesigner(r, settings);
- designer.DesignContext.Services.AddService(typeof(IPropertyDescriptionService), new PropertyDescriptionService(this.PrimaryFile));
designer.DesignContext.Services.Selection.SelectionChanged += OnSelectionChanged;
designer.DesignContext.Services.GetService().UndoStackChanged += OnUndoStackChanged;
}
@@ -66,8 +69,12 @@ namespace ICSharpCode.WpfDesign.AddIn
protected override void SaveInternal(OpenedFile file, System.IO.Stream stream)
{
- using (XmlTextWriter xmlWriter = new XmlTextWriter(stream, Encoding.UTF8)) {
- xmlWriter.Formatting = Formatting.Indented;
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Encoding = Encoding.UTF8;
+ settings.Indent = true;
+ settings.IndentChars = ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.SharpDevelopTextEditorProperties.Instance.IndentationString;
+ settings.NewLineOnAttributes = true;
+ using (XmlWriter xmlWriter = XmlTextWriter.Create(stream, settings)) {
designer.SaveDesigner(xmlWriter);
}
}
@@ -116,6 +123,10 @@ namespace ICSharpCode.WpfDesign.AddIn
return true;
}
+ public Designer.PropertyEditor PropertyEditor {
+ get { return propertyEditor; }
+ }
+
PropertyContainer propertyContainer = new PropertyContainer();
public PropertyContainer PropertyContainer {
@@ -133,12 +144,13 @@ namespace ICSharpCode.WpfDesign.AddIn
base.Dispose();
}
-// protected override void OnSwitchedTo(EventArgs e)
-// {
-// base.OnSwitchedTo(e);
-// if (designer != null && designer.DesignContext != null) {
-// WpfToolbox.Instance.ToolService = designer.DesignContext.Services.Tool;
-// }
-// }
+ void OnIsActiveViewContentChanged(object sender, EventArgs e)
+ {
+ if (IsActiveViewContent) {
+ if (designer != null && designer.DesignContext != null) {
+ WpfToolbox.Instance.ToolService = designer.DesignContext.Services.Tool;
+ }
+ }
+ }
}
}
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.AddIn.csproj b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.AddIn.csproj
index 0485cf8262..df70da371e 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.AddIn.csproj
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.AddIn.csproj
@@ -1,4 +1,4 @@
-
+
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}
Debug
@@ -11,6 +11,7 @@
False
4
false
+ v3.5
true
@@ -52,10 +53,12 @@
Configuration\GlobalAssemblyInfo.cs
+
+
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/EventHandlerEditor.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/EventHandlerEditor.cs
new file mode 100644
index 0000000000..168b7d54ce
--- /dev/null
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/EventHandlerEditor.cs
@@ -0,0 +1,80 @@
+//
+//
+//
+//
+// $Revision: 2667$
+//
+
+using System;
+using System.Windows;
+using System.Windows.Input;
+using System.Windows.Controls;
+using ICSharpCode.WpfDesign.PropertyEditor;
+
+namespace ICSharpCode.WpfDesign.Designer.Controls
+{
+ ///
+ /// The combo box used to enter the event handler which an event is connected to.
+ ///
+ sealed class EventHandlerEditor : ComboBox
+ {
+ readonly IPropertyEditorDataEvent dataEvent;
+
+ public EventHandlerEditor(IPropertyEditorDataEvent dataEvent)
+ {
+ this.dataEvent = dataEvent;
+ this.IsEditable = true;
+
+ Loaded += delegate {
+ dataEvent.HandlerNameChanged += OnEventHandlerNameChanged;
+ OnEventHandlerNameChanged(null, null);
+ };
+ Unloaded += delegate {
+ dataEvent.HandlerNameChanged -= OnEventHandlerNameChanged;
+ };
+ }
+
+ void OnEventHandlerNameChanged(object sender, EventArgs e)
+ {
+ this.Text = dataEvent.HandlerName;
+ }
+
+ protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e)
+ {
+ base.OnKeyDown(e);
+
+ if (e.Handled)
+ return;
+ if (e.Key == Key.Enter) {
+ dataEvent.HandlerName = this.Text;
+ if (!string.IsNullOrEmpty(dataEvent.HandlerName)) {
+ dataEvent.GoToHandler();
+ }
+ e.Handled = true;
+ } else if (e.Key == Key.Escape) {
+ this.Text = dataEvent.HandlerName;
+ e.Handled = true;
+ }
+ }
+
+ protected override void OnLostKeyboardFocus(KeyboardFocusChangedEventArgs e)
+ {
+ base.OnLostKeyboardFocus(e);
+ if (string.IsNullOrEmpty(this.Text))
+ dataEvent.HandlerName = null;
+ else
+ this.Text = dataEvent.HandlerName;
+ }
+
+ protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
+ {
+ e.Handled = true;
+ DoubleClick();
+ }
+
+ public void DoubleClick()
+ {
+ dataEvent.GoToHandler();
+ }
+ }
+}
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.cs
index 9e1089a890..92f04d7ec6 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.cs
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.cs
@@ -79,7 +79,7 @@ namespace ICSharpCode.WpfDesign.Designer
void ShowEventsButton_Click(object sender, RoutedEventArgs e)
{
-
+ ShowEvents(this.EditedObject);
}
bool useCategories = false;
@@ -92,7 +92,7 @@ namespace ICSharpCode.WpfDesign.Designer
if (useCategories) {
List categories = new List();
- foreach (IPropertyEditorDataProperty p in Func.Sort(dataSource.Properties, ComparePropertyNames)) {
+ foreach (IPropertyEditorDataProperty p in Func.Sort(dataSource.Properties, CompareMemberNames)) {
if (p.Name == "Name") {
continue;
}
@@ -111,7 +111,7 @@ namespace ICSharpCode.WpfDesign.Designer
} else {
PropertyGridView grid = new PropertyGridView();
contentStackPanel.Children.Add(grid);
- foreach (IPropertyEditorDataProperty p in Func.Sort(dataSource.Properties, ComparePropertyNames)) {
+ foreach (IPropertyEditorDataProperty p in Func.Sort(dataSource.Properties, CompareMemberNames)) {
if (p.Name == "Name") {
continue;
}
@@ -120,7 +120,20 @@ namespace ICSharpCode.WpfDesign.Designer
}
}
- static int ComparePropertyNames(IPropertyEditorDataProperty p1, IPropertyEditorDataProperty p2)
+ void ShowEvents(IPropertyEditorDataSource dataSource)
+ {
+ contentStackPanel.Children.Clear();
+ if (dataSource == null)
+ return;
+
+ PropertyGridView grid = new PropertyGridView();
+ contentStackPanel.Children.Add(grid);
+ foreach (IPropertyEditorDataEvent e in Func.Sort(dataSource.Events, CompareMemberNames)) {
+ grid.AddEvent(e);
+ }
+ }
+
+ static int CompareMemberNames(IPropertyEditorDataMember p1, IPropertyEditorDataMember p2)
{
return p1.Name.CompareTo(p2.Name);
}
@@ -169,6 +182,20 @@ namespace ICSharpCode.WpfDesign.Designer
}
}
}
+
+ void nameTextBox_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.Handled) return;
+ if (e.Key == Key.Enter) {
+ nameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource();
+ } else if (e.Key == Key.Escape) {
+ nameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateTarget();
+ }
+ }
+
+ public TextBox NameTextBox {
+ get { return nameTextBox; }
+ }
}
}
diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.xaml b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.xaml
index 665ecd0e57..6cd3b684f2 100644
--- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.xaml
+++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/PropertyEditor/PropertyEditor.xaml
@@ -24,7 +24,8 @@
-