I have a text box in WPF that is part of a datatemplate for a listbox. In that text box I can delete, backspace, spacebar, but I can NOT type in new words, letters or numbers. I CAN paste from notepad though.
What am I missing here?
<ListBox Grid.Column="1" ItemsSource="{Binding Details}" VirtualizingStackPanel.VirtualizationMode="Recycling" HorizontalContentAlignment="Stretch" > <ListBox.Resources> <DataTemplate DataType="{x:Type Entities:RADetailEntry}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <ComboBox Grid.Column="0" /> <TextBox Grid.Column="1" IsReadOnly="False" IsEnabled="True" Text="{Binding Path=Description, Mode=TwoWay}" TextWrapping="Wrap" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" TextAlignment="Left" /> </Grid> </DataTemplate> </ListBox.Resources> </ListBox>
For example, the Windows Presentation Foundation (WPF) framework implements the IsMouseOver property as read-only because its value should only be determined by mouse input.
To prevent users from modifying the contents of a TextBox control, set the IsReadOnly attribute to true.
TextBlock is not editable.
The TextBlock control provides flexible text support for UI scenarios that do not require more than one paragraph of text. It supports a number of properties that enable precise control of presentation, such as FontFamily, FontSize, FontWeight, TextEffects, and TextWrapping.
I was encountering a problem very similar to this. After doing a little research, I found a similar problem listed in MSDN:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c68d5f3c-c8cc-427d-82e3-6135d075a304/
According to the answer to the post, the problem has to do with WPF and WinForms having two very different ways of handling text input. Fortunately, the post listed above gives the following solution:
When launching the window, use ElementHost.EnableModelessKeyboardInterop(window1). Note that this is a static method - you do not have to instantiate the ElementHost class.
For example,
Window window1 = new Window(); ElementHost.EnableModelessKeyboardInterop(window1); window1.Show();
This solved the problem for me. Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With