【发布时间】:2014-07-23 05:15:40
【问题描述】:
我在滚动查看器中水平显示图像列表,我正在使用下面的代码行来做它
<ScrollViewer Name="lviewThumbnails" Height="230" >
<ItemsControl ItemsSource="{Binding ThumbsCollection}" MouseWheel="ItemsControl_MouseWheel" >
<ItemsControl.ItemTemplate >
<DataTemplate>
<DockPanel Height="230">
<Button Name="pageThumbnail" DockPanel.Dock="Top" Tag="{Binding}" VerticalAlignment="Top" Margin="5,2">
<Grid>
<Image MaxWidth="140" Height="200" Source="{Binding ThubnailPath,IsAsync=True}" Stretch="None"></Image>
</Grid>
</Button>
<Label HorizontalAlignment="Center" FontSize="14" FontWeight="Bold" Content="text" Foreground="White" Padding="5"></Label>
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
我想在打开视图时将焦点设置到此列表中的特定图像项 例如,如果列表中有 150 张图像,并且我想在打开列表时将焦点设置为图像 75
我正在做的是点击按钮我正在设置此代码
lviewThumbnails.Visibility = Visibility.Visible;
使图像可见,但第一项是每次默认选择的一项。 我正在使用触发器来检测所选图像,就像这样
<DataTrigger Binding="{Binding IsSelected}" Value="True">
<Setter TargetName="pageThumbnail" Property="BorderBrush" Value="Yellow"/>
<Setter TargetName="pageThumbnail" Property="BorderThickness" Value="3"/>
</DataTrigger>
但问题是如果图像 75 是选定的,我可以看到图像 75 周围的黄色边框,但是当我单击按钮时焦点仍然在图像 1 上。我必须滚动查看器的上一个、下一个按钮才能到达图 75。 我正在使用具有特定样式的滚动查看器,例如第 1 列按钮第 2 列内容和第 3 列再次按钮(希望它不会影响默认行为),并且我正在防止鼠标在任何地方滚动查看器滚动
<ControlTemplate TargetType="{x:Type ScrollViewer}" x:Key="ButtonOnlyScrollViewer">
<ControlTemplate.Resources>
</ControlTemplate.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20" />
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<Button Style="{StaticResource ResourceKey=ViewPreviousButton}" Grid.Column="0" Command="ScrollBar.PageUpCommand" MouseWheel="ItemsControl_MouseWheel"
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></Button>
<ScrollContentPresenter
CanContentScroll="{TemplateBinding CanContentScroll}"
Grid.Column="1"
Content="{TemplateBinding Content}"
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}"
Margin="{TemplateBinding Margin}"/>
<Button Style="{StaticResource ResourceKey=ViewNextButton}" Grid.Column="2" Command="ScrollBar.PageDownCommand" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MouseWheel="ItemsControl_MouseWheel"
></Button>
</Grid>
</ControlTemplate>
【问题讨论】:
标签: c# wpf itemscontrol