概要:リストボックスアイテムをクリックすると、DataTemplateのテキストボックスがフォーカスされますが、リストボックスアイテムは選択されていません。
これはイベントのバブリングと関係があると確信していますが、ここで何かが欠けています。
私はリストボックスを持っています。各ListBoxItemのContentTemplateは、単純なテキストボックスを含むDataTemplateに割り当てられます。
このTextBoxは、偽の編集可能なラベルとして表示されるように設計されています。
問題:テキストボックスをクリックすると、リストボックスのselectedItemが更新されません。テキストボックスはmousedownイベントを飲み込んでおり、リストボックスに新しいアイテムに更新するように通知されることはありません。
私はここで愚かな何かを逃しているような気がします。何か案は?イベントを強制的に親のListViewにバブルアップさせる方法はありますか?
テキストボックスの背景をNullにすることから、previewmousedownイベントを処理し、e.handled = false;を設定することまで、すべてを試しました。
DataTemplate:
<DataTemplate x:Key="ItemTempl">
<TextBox Height="20" Width="200" Name="tbox" Text="{Binding WordText}" HorizontalAlignment="Stretch">
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="{x:Null}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsFocused, ElementName=tbox}" Value="True">
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Background" Value="White"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</DataTemplate>
リストビュー:
<ListView HorizontalAlignment="Stretch" ItemsSource="{Binding Something.Words}" Name="MainListView" SelectedItem="{Binding CurrentItem, Mode=TwoWay}" BorderThickness="0" ItemContainerStyle="{StaticResource ContainerStyle}">
</ListView>