I have a ListView control with TextBox and Button inside the ListViewItem, my problem is that when you enter into a textbox the row doesn't select. If you want to select a row you have to click somewhere in the row where there is no control.
How can I make the row automaticly select when I click or enter into a child control of a row ?
I tried this on the button click event, but without any luck :
        DependencyObject dep = (DependencyObject)sender;
        while ((dep != null) && !(dep is ListViewItem))
        {
            dep = VisualTreeHelper.GetParent(dep);
        }
        if (dep != null)
        {
            lvRoutes.SelectedItem = (ListViewItem)dep;
        }
It always keep the first row selected.
Thank in advance.
try using attached properties
public static class ItemSelector
{
    public static DependencyProperty MakeSelectionProperty = 
        DependencyProperty.RegisterAttached("MakeSelection", 
        typeof(bool?), 
        typeof(ItemSelector), 
        new PropertyMetadata(null, OnMakeSelectionPropertyChanged));
    public static DependencyProperty ItemsControlProperty = 
        DependencyProperty.RegisterAttached("ItemsControl", 
        typeof(ItemsControl), 
        typeof(ItemSelector));
    public static void SetMakeSelection(
        DependencyObject d, bool value)
    {
        d.SetValue(MakeSelectionProperty, value);
    }
    public static void SetItemsControl(
        DependencyObject d, ItemsControl value)
    {
        d.SetValue(ItemsControlProperty, value);
    }
    private static void OnMakeSelectionPropertyChanged(
        DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var itemsControl = d.GetValue(ItemsControlProperty) 
            as ItemsControl;
        if (itemsControl == null)
            return;
        ((ListBoxItem) itemsControl.ContainerFromElement(d))
            .IsSelected = true;
    }
and heres its use
<ListView ItemsSource="{Binding}" SelectionMode="Single">
<ListView.ItemTemplate>
  <DataTemplate>
    <TextBox Text="{Binding SomeText}" 
             w:ItemSelector.MakeSelection="{Binding RelativeSource=
                {RelativeSource Self}, Path=IsFocused}" 
             w:ItemSelector.ItemsControl="{Binding RelativeSource=
                {RelativeSource FindAncestor, AncestorType=
                    {x:Type ListView}}}" Margin="10" />
  </DataTemplate>
</ListView.ItemTemplate>
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论