我在WPF中有一个文本框,它是列表框的数据窗口的一部分.在那个文本框中我可以删除,退格,空格键,但我不能输入新的单词,字母或数字.我可以从记事本粘贴.
我在这里错过了什么?
<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>
Run Code Online (Sandbox Code Playgroud)
小智 45
我遇到了一个与此非常相似的问题.做了一点研究后,我发现MSDN中列出了类似的问题:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c68d5f3c-c8cc-427d-82e3-6135d075a304/
根据帖子的答案,问题与WPF和WinForms有两种截然不同的处理文本输入的方式.幸运的是,上面列出的帖子提供了以下解决方案:
启动窗口时,使用ElementHost.EnableModelessKeyboardInterop(window1).请注意,这是一个静态方法 - 您不必实例化ElementHost类.
例如,
Window window1 = new Window();
ElementHost.EnableModelessKeyboardInterop(window1);
window1.Show();
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题.希望这可以帮助.