ビューモデルにバインドされたListView内にTextBoxとDropDownがあります。comboBoxが正常に機能している間、TextBox内にテキストを「入力」することはできません。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)親コントロールに「any」イベントハンドラーを登録していません。
解決策: @HCLによって提案されたリンクに従って、次のコードで問題が修正されました。
Window window1 = new Window();
ElementHost.EnableModelessKeyboardInterop(window1); //This is needed for Sharing Message Loops Between Win32 and WPF
window1.Show();