2017-07-18 6 views
0

以下のコードは、ドキュメント内のページのサムネイルイメージを表示するために使用します。XAML/WPFキャンバスまたはTextBlockの動作Windowsのバージョンの相違点

<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マシンはありません。

この問題または回避策の原因を突き止めることができませんでした。誰かがこの問題を引き起こしていることや解決策について何か洞察しているなら、私は助けていただければ幸いです。問題が明示的にTextBlockのフォアグラウンドプロパティを設定しないことによって引き起こされた

Screenshot of issue

答えて

0

以下は、この動作のイメージです。 ListViewアイテムがクリックされると、そのアイテムはSelected Itemに変更され、その子は「コントロールパネル\すべてコントロールパネルのアイテム\パーソナライゼーション\ウィンドウの色と外観\詳細な外観設定...」で参照されるウィンドウの色と外観のプロパティに適応しました。

TextBlockのフォントが白くなっています。これは、ウィンドウの色と外観の設定で選択した項目のフォント色で、白いTextBlockの背景のために表示されないためです。

Window Color and Appearance