2013-06-12 3 views
1

У меня есть gridview в моем списке (xaml) Я установил выделенный элемент в своем списке по значению индекса. Это прекрасно работает.Установить фокус на выбранный элемент списка

Теперь я хочу, чтобы фокус клавиатуры находился на выбранном элементе.

Я могу установить фокус на самом представлении, но не на выбранный элемент в списке.

// Set selected item at index : i 
    listview1.SelectedIndex = i; 

// Sets focus to listview 
    listview1.Focus(); 

// Try to set focus to selected item 
    ListViewItem myitem = listview1.Items[i] as ListViewItem; 


    myitem.Focus(); 

dgrid1.xaml

 <ListView Name="listview1" > 

      <ListView.View> 

       <GridView ColumnHeaderToolTip="Multiple Category Information">       

        <GridViewColumn DisplayMemberBinding="{Binding Path=Enquiry_Number}" Header="Enquiry number"/> 
        <GridViewColumn DisplayMemberBinding="{Binding Path=Consignee_Ref}" Header="Consignee reference"/> 
        <GridViewColumn DisplayMemberBinding="{Binding Path=Booking_Reference}" Header="Booking reference"/> 
        <GridViewColumn DisplayMemberBinding="{Binding Path=Contract_Number}" Header="Contract Number"/> 
        <GridViewColumn DisplayMemberBinding="{Binding Path=Invoice_Number}" Header="Invoice Number"/> 
        <GridViewColumn DisplayMemberBinding="{Binding Path=Date_Invoice}" Header="Invoice Date"/> 
        <GridViewColumn DisplayMemberBinding="{Binding Path=Status}" Header="Status"/> 
        <GridViewColumn DisplayMemberBinding="{Binding Path=Period_Enquiry}" Header="Period Enquiry"/> 
        <GridViewColumn DisplayMemberBinding="{Binding Path=Consignee}" Header="Consignee"/> 
       </GridView> 

      </ListView.View> 

     </ListView> 

dgrid1.xaml.cs

// Call the DataManager Class which will collect the data and fill the data set with it 
DataManager.BindFilteredData(dts);  

public static void BindFilteredData(DataSet dts) 
    { 
     using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ConnectionString)) 
     { 
      sql = "SELECT Enquiry_Number, Consignee_Ref, Booking_Reference, Contract_Number, Invoice_No, Date_Invoice, [Status], Period_Enquiry, Consignee FROM ConsHead"; 

      using (SqlDataAdapter adapter = new SqlDataAdapter(sql, connection)) 
      {      
       adapter.Fill(dts); 
      } 
     } 
    }  
+0

Вы не можете использовать listview1.Selecteditem.focus? – Terry

+1

listview1.SelectedItem.focus(); Это дает «объект не содержит определения для« фокуса »и никакого метода расширения ... и т. Д. –

+0

вы можете показать некоторый xaml (вложенное gridview в listview). Позволяет мне скопировать вашу проблему. – Terry

ответ

1

Я нашел работу вокруг. Я понял, что после того, как все загружено и выбран конкретный элемент, в настоящее время в списке нет фокуса. Если я нажимаю клавишу TAB, фокус переходит к выбранному элементу в списке. Таким образом, я имитировал событие нажатия клавиши TAB программно - поэтому мой объект получает фокус после загрузки окна