2017-07-18 71 views
0

下面的代码用于查看文档中页面的缩略图。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计算机来测试此问题。

我一直无法弄清楚是什么导致此问题或解决方法。如果任何人有任何关于什么是造成这个问题和/或可能的解决方案的见解,我会感谢一些帮助。

下面是此行为的图像:

Screenshot of issue

回答

0

问题是由未明确设置TextBlock的前景财产造成。当单击ListView项目时,它将更改为选定项目,并且它的子项适用于在“控制面板\所有控制面板项目\个性化\窗口颜色和外观\高级外观设置...”中引用的窗口颜色和外观属性。

TextBlock中的字体变成白色,因为这是我在Window Color和Appearance设置中选定项目的字体颜色,并且由于白色的TextBlock背景而不可见。

Window Color and Appearance

相关问题