【发布时间】:2017-07-13 19:50:14
【问题描述】:
我在ContentDialog 中有一个AutosuggestBox,如下所示:
<ContentDialog x:Name="BrowseBySourceDialog"
Grid.Column="1"
PrimaryButtonText="{x:Bind ViewModel._BTN_ok}"
PrimaryButtonClick="BrowseBySourceDialog_PrimaryButtonClick"
SecondaryButtonClick="Dialog_SecondaryButtonClick"
SecondaryButtonText="{x:Bind ViewModel._BTN_close}"
Opened="BrowseBySourceDialog_Opened"
GotFocus="BrowseBySourceDialog_GotFocus"
Style="{StaticResource ContentDialogStyles}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Border Background="#1A503E"
MinHeight="40"
Grid.Row="0">
<TextBlock Text="{x:Bind ViewModel._HEADER_BROWSE_sourceOrganization}"
Style="{StaticResource DialogTextBlockStyle}" />
</Border>
<ListView Name="BrowseBySourceTopResultsListView" IsTabStop="True"
x:FieldModifier="public"
Grid.Row="3"
SelectionMode="Single"
IsItemClickEnabled="True"
ItemClick="FeaturedResultsSourceListView_ItemClick"
MaxHeight="500"
ItemsSource="{x:Bind BrowseBySourceList}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate x:DataType="viewModels:BrowseByStarViewModel">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Source="{x:Bind icon}"
Width="40"
Height="40"
Margin="10"/>
<TextBlock Text="{x:Bind read}"
Grid.Column="1"
TextAlignment="Center"
VerticalAlignment="Center"
Margin="20, 0, 0, 0"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<AutoSuggestBox Grid.Row="1"
Name="asbBrowseBySource"
TextMemberPath="read"
PlaceholderText="{x:Bind ViewModel._TIPS_source_select}"
LostFocus="asbBrowseBySource_LostFocus"
GotFocus="asbBrowseBySource_GotFocus"
TextChanged="asbBrowseBySource_TextChanged">
<AutoSuggestBox.ItemTemplate>
<DataTemplate x:DataType="response:ExploreApiResponseItem">
<TextBlock Text="{x:Bind read}"
Margin="5"/>
</DataTemplate>
</AutoSuggestBox.ItemTemplate>
</AutoSuggestBox>
<ComboBox x:Name="BrowseBySourceComboBox"
LostFocus="BrowseBySourceComboBox_LostFocus"
SelectionChanged="BrowseBySourceComboBox_SelectionChanged"
Grid.Row="2"
PlaceholderText="{x:Bind ViewModel._TIPS_source_select}"
IsTextSearchEnabled="True"
Style="{StaticResource ComboBoxStyle}"
ItemsSource="{x:Bind BrowseBySourceComboBoxList, Mode=OneWay}">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="response:ExploreApiResponseItem">
<TextBlock Text="{x:Bind read}"
Margin="5"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
问题是,只要我打开ContentDialog,我的AutosuggestBox 就会自动聚焦。因为我在 AutosuggestBox 的 GotFocus 事件中设置了 IsSuggestionListOpen = True,所以在打开内容对话框后会立即打开建议列表。我想停止此操作并仅在用户单击/点击AutosuggestBOx 后打开 SuggestionList
为了补充这个问题,当 AutosuggestBox 已经聚焦并且我点击外面的某个地方时,它不会失去焦点。
【问题讨论】:
-
尝试在
ContentDialog的Loaded事件中关注其他内容。例如yourElement.Focus(FocusState.Programmatic); -
试过了,但是
AutosuggestBox.GotFocus在ContentDialog.Opened之后被解雇了 -
这可能是因为
ContentDialog不可聚焦所以它聚焦第一个可聚焦的孩子。尝试聚焦ComboBox。 -
那里打错字,编辑了我的评论,在我的
ContentDialog.Opened事件中,我将焦点从AutosuggestBox移开