5

Tôi có trích đoạn XAML sau:Làm thế nào để ngăn chặn TextBlock từ việc lấy nét tự động

 <SplitView Name="Menu" DisplayMode="CompactOverlay" OpenPaneLength="200" CompactPaneLength="0" Grid.RowSpan="2"> 
      <SplitView.Pane> 
       <StackPanel> 
        <AutoSuggestBox Margin="0,20,0,20" Width="170" PlaceholderText="Search" QueryIcon="Find"></AutoSuggestBox> 
        <ListBox> 
         <ListBoxItem Tapped="Projects_Tapped"> 
          <StackPanel Orientation="Horizontal"> 
           <SymbolIcon Symbol="Library" /> 
           <TextBlock Margin="10,0,0,0">Projects</TextBlock> 
          </StackPanel> 
         </ListBoxItem> 
         [....] 
        </ListBox> 
       </StackPanel> 
      </SplitView.Pane> 
     </SplitView> 

Về cơ bản, splitview này là đầm cho đến khi người dùng nhấn một nút mà sau đó đặt IsPaneOpen true, do đó cho thấy tôi menu ứng dụng.

Vấn đề là, điều đầu tiên tôi có trong menu là hộp tìm kiếm và dường như nó được tập trung tự động bất kể tôi làm gì. Thực tế là nó đã tập trung sau đó đưa lên bàn phím cảm ứng trên điện thoại, đó là rất khó chịu và giấu hầu hết các menu trên điện thoại nhỏ.

Tôi đã cố gắng chơi với thuộc tính TabIndex để cung cấp cho nó một số lượng lớn hoặc thậm chí đặt chỉ mục thấp hơn cho một thứ khác.

Tôi cũng đã thử đặt IsTabStop thành sai nhưng điều đó dường như không làm gì cả.

Có cách nào gọn gàng để ngăn hộp lấy nét tự động không? (Bên cạnh việc vô hiệu hóa/ẩn các yếu tố và sau đó cho phép/cho thấy nó một lần nữa)

Trả lời

1

Bạn có thể thử như sau:

Cho ListBox một cái tên:

<ListBox Name="MyListBox"> 

Sau đó, nơi bạn gọi IsPaneOpen để true, thêm dòng sau:

Menu.IsPaneOpen = true; 
MyListbox.Focus(FocusState.Programmatic); 

Điều này sẽ thay đổi tiêu điểm thành ListBox elemen t và loại bỏ bàn phím khi bạn mở SplitView.

+0

Trong khi giải pháp này đã làm việc cho tôi, tôi thích câu trả lời của Elvis vì tôi cảm thấy nó sạch sẽ hơn. Tôi đã cố gắng tránh mã C# hoàn toàn .. –

0

Đây là TextBox bên trong AutoSuggestBox tự động lấy tiêu điểm.

Để khắc phục vấn đề này, bạn có thể chỉnh sửa các mẫu của AutoSuggestBox bởi:

Nhấp vào 'Document Outline' tag-> chọn AutoSuggestBox phần tử từ tài liệu Tree-> đúng cấp nhấp chuột> Edit Template-> Chỉnh sửa một bản sao .

Sau đó, VS sẽ thêm Mẫu vào trang Tài nguyên của bạn. Thêm IsTabStop="False" vào Hộp văn bản bên trong mẫu như sau:

<ControlTemplate TargetType="AutoSuggestBox"> 
    <Grid> 
     <VisualStateManager.VisualStateGroups> 
      ... 
     </VisualStateManager.VisualStateGroups> 
     <TextBox x:Name="TextBox" IsTabStop="False" ScrollViewer.BringIntoViewOnFocusChange="False" DesiredCandidateWindowAlignment="BottomEdge" Header="{TemplateBinding Header}" Margin="0" PlaceholderText="{TemplateBinding PlaceholderText}" Style="{TemplateBinding TextBoxStyle}" Width="{TemplateBinding Width}" Canvas.ZIndex="0"/> 
     <Popup x:Name="SuggestionsPopup"> 
      ... 
     </Popup> 
    </Grid> 
</ControlTemplate> 

Sau đó, nó sẽ tự động ngừng lấy nét.

+0

Giải thích chi tiết đơn giản và sạch sẽ, tôi thích nó! Cảm ơn –

+3

Bây giờ nó đã ngừng tập trung hoàn toàn ... –

-1

Tôi đặt tabIndex đơn giản đến 999 và điều này giải quyết vấn đề của tôi:

<AutoSuggestBox TabIndex="999" /> 

Trước khi tôi đã cố gắng chấp nhận câu trả lời, nhưng nó không gây ra để nhận được tập trung hoàn toàn, tức là không thể sử dụng hộp ở tất cả (không thể tập trung trên đó, không có bàn phím bật lên, vv).

+0

Việc bỏ qua không chỉ là hack và không phải là sửa chữa, nhưng nó cũng không trả lời câu hỏi ban đầu.Có 'IsTabStop' sẽ ngăn chặn các yếu tố được tập trung (nó là kinda rõ ràng trong tên) nhưng với đề nghị của bạn, bạn đang tránh vấn đề. Bây giờ tôi có thêm kiến ​​thức về XAML, tôi tin câu trả lời hay nhất là Justin vì vậy tôi chọn một câu trả lời ngay bây giờ –

+0

Nó có thể không khớp chính xác với câu hỏi, nhưng tôi đến trang này với vấn đề tương tự và cảm ơn trang đó tìm ra giải pháp. Vì vậy, tôi nghĩ rằng những người khác có thể cũng quan tâm. Nó hoạt động cho tôi, và giải pháp XAML nói chung là đáng tin cậy hơn, hơn là cố gắng khắc phục bằng tay và chuyển trọng tâm theo chương trình. –

Các vấn đề liên quan