【发布时间】:2018-01-09 14:42:10
【问题描述】:
我们使用 Listbox 和 ItemTemplate 来让 Image 和 Textblock 同时显示在一行中。
我们第一次无法使用向上和向下箭头进行导航,但是在使用 PageDown 和 PageUp 事件时可以使用相同的箭头。
实际上,当我们尝试单击第二个列表框然后尝试使用向上和向下箭头时,有 2 个列表框并排放置。
这个问题很奇怪,这仅在我们第一次加载屏幕时发生。单击第二个列表框然后返回到第一个列表框后,向上和向下箭头工作正常。
<Style x:Key="_ListBoxItemStyle" TargetType="ListBoxItem">
<!--<EventSetter Event="MouseEnter" Handler="ListBoxItem_MouseEnter" />-->
<EventSetter Event="KeyDown" Handler="IDC_AVAILABLE_STATIONS_KeyDown" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border Name="_Border"
SnapsToDevicePixels="true">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="_Border" Property="Background" Value="#3d94db"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ListBox x:Name="IDC_AVAILABLE_STATIONS" Width="172" Height="98" Margin="2,6,0,0"
MouseDoubleClick="IDC_AVAILABLE_STATIONS_MouseDoubleClick"
ItemContainerStyle="{DynamicResource ResourceKey=_ListBoxItemStyle}"
VerticalAlignment="Top" HorizontalAlignment="Left" ScrollViewer.HorizontalScrollBarVisibility="Hidden" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Left">
<Grid>
<Image Width="17" Height="17" Margin="0,0,0,2" Source="{Binding NetworkSetupImage}" HorizontalAlignment="Left" >
<Image.Style>
<Style>
<Setter Property="Image.Source" Value="{Binding NetworkSetupImage}" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}" Value="True">
<Setter Property="Image.Source" Value="{Binding NetworkSetupImage}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</Grid>
<TextBlock x:Name="DisplayedStationName" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="19,1,0,1"
Text="{Binding DisplayedStationName}" ToolTip="{Binding Stationtooltip}" Width="{Binding Path=ActualWidth, ElementName=IDC_AVAILABLE_STATIONS}" >
</TextBlock>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
【问题讨论】:
-
好像是焦点问题
-
实际上我已经尝试将焦点添加到两个列表框并进一步尝试找到 ListboxItem 然后将焦点设置为它。不幸的是,他们两个都没有工作。但是 PageUp 和 PageDown 键都可以正常工作。这个问题很奇怪,它只发生在向上和向下箭头