ViewModel에 바인딩 된 ListView 안에 TextBox와 DropDown이 있습니다. comboBox가 정상적으로 작동하는 동안 TextBox 내부에 텍스트를 "입력"할 수 없습니다. Backspace/SpaceBar/Ctrl + C/Ctrl + V는 정상적으로 작동하지만 영숫자 키를 누르면 마침내 TextBox에 텍스트가 표시됩니다.GridView/ListView (WPF) 내 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)이 WPF 창을 WinForm 응용 프로그램에서로드하고 있습니다.
2) 문제는 textBox와 viewModel의 바인딩에 있지 않습니다. 텍스트 속성 (위 코드와 같이)에 하드 코드 된 간단한 텍스트를 편집 할 수조차가 없습니다.
3) 상위 컨트롤에서 "모든"이벤트 처리기를 등록하지 않았습니다.
해결책 : @HCL에서 제안한 링크에 따라 다음 코드가 내 문제를 해결했습니다.
Window window1 = new Window();
ElementHost.EnableModelessKeyboardInterop(window1); //This is needed for Sharing Message Loops Between Win32 and WPF
window1.Show();
작동하지 않는 행입니다. 처음에는 바인딩이 있었지만 단순성을 위해 텍스트를 직접 작성했습니다.TextBox가 Text 속성에서 설정할 수있는 내용을 입력 할 수 없습니다. –
또한 정확합니다. WinForm 응용 프로그램에서이 WPF 창을로드하고 있습니다. 내 질문에 그 말하기. –
답변을 업데이트했습니다. 희망이 도움이됩니다. – HCL