为什么我的WPF文本框"有点"只读?

Rus*_*uss 22 wpf .net-3.5

我在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)

这解决了我的问题.希望这可以帮助.

  • 只是提到当你有WinForms/MFC调用WPF并使用`ElementHost.EnableModelessKeyboardInterop(wpfwindow)`时可能会出现的另一个问题.如果WPF窗口使用`Window.Show()`打开另一个窗口,那么也会出现文本框问题 - 每个窗口都需要启用无模式互操作.请注意,`Window.ShowDialog()`不会导致问题. (11认同)