DrGriff DrGriff - 4 months ago 27
C# Question

WPF window textbox - editing text affects different window

I am writing a Visual Studio extension for our Dev team (a VSIX solution). When the user activates the extension, they get a form which is a very simple WPF window. The window is loaded using the following code:

var myWindow = new SomeWpfWindow(myArgs)
Owner = Application.Current.MainWindow

This opens and displays a form that the user fills in. The form has lots of TextBoxes that undergo 2-way binding to the DataContext. Nothing too out of the ordinary.

Well, apart from the TextBox behaviour....

When I type characters in the textbox ("blah blah blah") then I see these characters displayed in the text box, and they also get written to the DataContext property that they're bound to.

However. When I press the back-space or delete button, then the text in the TextBox remains unchanged, but instead the window behind (in this case, the active code file) is edited. Not ideal behaviour....

I fixed this by using .ShowDialog() rather than .Show(), but is is the correct fix, or am I just burying the problem?



The solution provided above solved the problem described above, but it wasn't the complete solution. What I found was that, having closed my WPF Dialog Window, I was then able to type into a C# window in the open Solution, but not able to Delete or back-space to remove text. Also when I tried to close Visual Studio, it gave the following warning:

Microsoft Visual Studio has detected that an operation is blocking user input. This can be caused by an active modal dialog or a task that needs to block user interaction. Would you like to shut down anyway?

Please refer to the following post for the solution to this: WPF modal window in Visual Studio Extension blocking input