下面的代码用于查看文档中页面的缩略图。Windows版本之间的XAML/WPF Canvas或TextBlock行为差异
<ListView x:Name="ThumbPanel" ItemsSource="{Binding OpenDocument.PageCollection}" SelectedIndex="{Binding PageIndexVM, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<Border MinHeight="50" MinWidth="50" BorderBrush="Black" BorderThickness="1" SnapsToDevicePixels="True" Margin="5">
<Grid HorizontalAlignment="Left">
<Image x:Name="ThumbImage" Width="{Binding ThumbWidth, Mode=OneWay, Source={StaticResource viewModel}}">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding PageCached, Mode=OneWay}" Value="true">
<Setter Property="Source">
<Setter.Value>
<MultiBinding Converter="{StaticResource UriToImageWithRotation}" Mode="OneWay">
<Binding Path="CacheImagePath" />
<Binding Path="OriginalRotation" />
<Binding Source="{StaticResource viewModel}" Path="ThumbWidth" />
</MultiBinding>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding PageCached, Mode=OneWay}" Value="false">
<Setter Property="Source" Value="{StaticResource CheckGreen}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<Canvas HorizontalAlignment="Right" Margin="0, 2, 18, 0">
<Image Width="16">
<Image.Style>
<Style>
<Setter Property="Image.Source" Value="{StaticResource CheckGreen}" />
<Style.Triggers>
<DataTrigger Value="False" Binding="{Binding IsSelected}">
<Setter Property="Image.Source" Value="{StaticResource CancelX}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</Canvas>
<Canvas VerticalAlignment="Bottom" HorizontalAlignment="Right">
<Canvas.Margin>
<MultiBinding Converter="{StaticResource TextMarginConverter}" Mode="OneWay">
<Binding ElementName="ThumbPageNum" Path="ActualWidth" />
<Binding ElementName="ThumbPageNum" Path="ActualHeight" />
</MultiBinding>
</Canvas.Margin>
<Border x:Name="ThumbPageNum" BorderBrush="Black" BorderThickness="1" SnapsToDevicePixels="True">
<TextBlock Text="{Binding Path=PageNumber, Mode=OneTime}" MinWidth="16" TextAlignment="Center" Padding="2" Background="White"/>
</Border>
</Canvas>
</Grid>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
在该代码中,最后一个画布是在缩略图图像的右下角显示页码表示法。
符号显示出来并正常工作,但是当点击缩略图图像并将其带入焦点时,我遇到了Windows 7中出现的问题; TextBlock将消失,并显示一个空白的白色画布。在Windows 10中,页码表示法没有改变,并且无论缩略图图像是否被点击并且处于焦点状态,它都能正确显示。我没有Windows 8计算机来测试此问题。
我一直无法弄清楚是什么导致此问题或解决方法。如果任何人有任何关于什么是造成这个问题和/或可能的解决方案的见解,我会感谢一些帮助。
下面是此行为的图像: