2017-07-18 79 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

相關問題