簡體   English   中英

如何防止TextBlock獲得自動焦點

[英]How to prevent TextBlock from getting automatic focus

我有以下XAML摘錄:

      <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>

基本上,這個splitview被壓縮,直到用戶按下一個按鈕,然后將IsPaneOpen設置為true,然后顯示我的應用程序菜單。

問題是,我在菜單中的第一件事就是搜索框,無論我做什么,它似乎都會自動聚焦。 它具有焦點的事實然后在手機上打開觸摸鍵盤,這非常煩人並且隱藏了小型手機上的大部分菜單。

我嘗試使用TabIndex屬性來給它一個巨大的數字,甚至為其他東西放一個較低的索引。

我也嘗試將IsTabStop設置為false,但似乎沒有做任何事情。

是否有一種干凈的方法可以防止盒子自動獲得焦點? (除了禁用/隱藏元素然后再次啟用/顯示它)

您可以嘗試以下方法:

ListBox一個名字:

<ListBox Name="MyListBox">

然后,在將IsPaneOpen調用為true ,添加以下行:

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

這會將焦點更改為ListBox元素,並在打開SplitView時關閉鍵盤。

AutoSuggestBox中的TextBox會自動檢索焦點。

要解決此問題,您可以通過以下方式編輯AutoSuggestBox的模板:

單擊“文檔大綱”標簽 - >從文檔樹中選擇AutoSuggestBox元素 - >右鍵單擊 - >編輯模板 - >編輯副本。

然后VS會將模板添加到您的頁面資源中。 IsTabStop="False"添加到模板內的TextBox,如下所示:

<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>

然后,它將自動停止聚焦。

我簡單地將TabIndex設置為999,這解決了我的問題:

<AutoSuggestBox TabIndex="999" />

在我嘗試接受答案之前,它會導致完全無法獲得焦點,即根本無法使用文本框(無法專注於它,不會彈出鍵盤等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM