1

私は次のListView(簡略化)を持っています:

<ListView Name="lvwNotes" KeyUp="lvwNotes_KeyUp">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical">
                <DockPanel Background="LightGray">
                     <TextBlock DockPanel.Dock="Right" Text="{Binding Path=Author}" />
                     <TextBlock Text="{Binding Path=Timestamp}" />
                </DockPanel>
                <TextBox Text="{Binding Path=Text}" 
                         GotFocus = "lvwNotes_TextBox_GotFocus"
                         TextWrapping="Wrap" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>

クリックによる選択項目の変更は、ユーザーが TextBlocks を含む DockPanel をクリックした場合にのみ機能し、TextBox をクリックした場合には機能しません。私が達成したいのは、選択した項目を、ユーザーがクリックした TextBox を含む項目に設定することです。

TextBox に関連する ListViewItem に到達することができました。

private void lvwNotes_TextBox_GotFocus(object sender, RoutedEventArgs e) {
    DependencyObject o = Tools.GetAncestorByType((DependencyObject)sender, typeof(ListViewItem));
    if (!o.Equals(null)) {
        // code to select this ListViewItem
    }
}

でもセッティング

lvwNotes.SelectedIten = o ;

影響なく残ります。Dispatcher.BeginInvoke でいくつかのトリックも試しましたが、正直なところ、そこで何をしているのか正確にはわかりません。

4

2 に答える 2