我在绑定到 viewModel 的 ListView 中有一个 TextBox 和一个 DropDown。虽然组合框工作正常,但我无法在文本框中“输入”任何文本。Backspace/SpaceBar/Ctrl+C/Ctrl+V 工作得很好,但是只要我按下任何字母数字键,它就不会在 TextBox 中显示任何文本。
还使用空的 KeyUp/KeyDown/TextChange 事件处理程序进行了检查。它为所有类型的按键引发 KeyUp/KeyDown 事件,但在按下任何字母数字键时不会触发 TextChange。
请建议是否有人曾经遇到过这个问题。或者,如果有办法调试并找到实际问题。
这是我的 XAML - 后面没有任何代码。
<Window x:Class="Ion.MarketView.Mmi.Plugins.AlertConfigurator.View.AlertConditionItemViewDebug"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
x:Name="aletConditionItems"
mc:Ignorable="d" >
<Grid >
<Grid.Resources>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
</Style>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="75"></ColumnDefinition>
</Grid.ColumnDefinitions>
<ListView Grid.Column="0" x:Name="lstViewConditionItems"
ItemsSource="{Binding ElementName=aletConditionItems, Path=DataContext.Items}"
SelectedItem="{Binding ElementName=aletConditionItems, Path=DataContext.SelectedItem, Mode=TwoWay}">
<ListView.View>
<GridView>
<GridViewColumn Header="Column Id" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox SelectedValue="{Binding Path=ColumnId}" Margin="-6,-2,-6,-2"
ItemsSource="{Binding ElementName=aletConditionItems, Path=DataContext.ColumnIds}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Value" Width="100" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="Only backSpace and SpaceBar works" ></TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<StackPanel Orientation="Horizontal" Grid.Column="1" VerticalAlignment="Top" >
<Button Content="+" Width="30" Command="{Binding ElementName=aletConditionItems, Path=DataContext.OnAddConditionItem}"></Button>
</StackPanel>
</Grid>
</Window>
感谢您的关注。
注意:1)我正在从 WinForm 应用程序加载此 WPF 窗口。
2) 问题不在于 textBox 与 viewModel 的绑定。我什至无法编辑在 Text 属性中硬编码的简单文本(如上面的代码)
3)我没有在任何父控件中注册“任何”事件处理程序。
解决方案: 根据@HCL 建议的链接,以下代码解决了我的问题。
Window window1 = new Window();
ElementHost.EnableModelessKeyboardInterop(window1); //This is needed for Sharing Message Loops Between Win32 and WPF
window1.Show();