2015-01-06 5 views
4

Я пытаюсь разместить изображение перед текстом в ToggleButton. Все идет хорошо. Но изображение отображается неправильно. Я увеличил изображение здесь, чтобы вы могли видеть, о чем я говорю. Как видите, некоторые части изображения отображаются неправильно.Изображение в ToggleButton не отображается должным образом в WPF

Образ Я пытаюсь показать

enter image description here

Результат

enter image description here

Увеличенная деталь результат

enter image description here

<BitmapImage x:Key="ColumnsLayoutMiniIcon" UriSource="pack://application:,,,/Main/Resources/dark/images/mini/columns_layout_mini_icon.png"/> 

<Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ToggleButton"> 
       <StackPanel Orientation="Horizontal"> 
        <Image x:Name="Border" Width="13" Height="13" Source="{StaticResource ColumnsLayoutMiniIcon}"> 
        </Image> 
        <Border x:Name="Content" 
          Padding="10 0 10 0"> 
         <ContentPresenter HorizontalAlignment="Center" 
              VerticalAlignment="Center" 
              Margin="-2 -3 0 0" 
              RecognizesAccessKey="True" /> 
        </Border>       
       </StackPanel> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter TargetName="Border" Property="Cursor" Value="Hand"/> 
        </Trigger> 
        <Trigger Property="IsChecked" Value="False"> 
        </Trigger> 
        <Trigger Property="IsChecked" Value="True"> 

        </Trigger> 

        <Trigger Property="IsChecked" Value="False"> 
         <Setter Property="Foreground" Value="LightGray"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 

      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<RadioButton Content="Plan View" 
      GroupName="View" 
      Style="{StaticResource BaseToggleButton}" 
      Checked="SwitchToPlanView_Selected" 
      IsEnabled="{Binding SwitchToModelViewsEnabled}" 
      IsChecked="{Binding SwitchToPlanViewSelected}"> 
</RadioButton> 
+0

как будто один пиксель перепрыгивает через O_o. Надеюсь, ты найдешь ответ на этот вопрос, очень странный! – DLeh

+0

@DLeh Меня уже несколько часов прослушивают :( – Vahid

ответ

3

Добавить UseLayoutRounding="true" в корень вашего Window элемента. Это позволит убедиться, что изображение привязывается к пикселям и не отображает странные артефакты.

+0

Спасибо, Крис, ты меня спас. – Vahid

+1

@Vahid: в 2010 году такая же проблема, дизайнеры пользовательского интерфейса были злились, что их картинки выглядели как дерьмо в WPF:) –

+0

Иногда в WPF происходят некоторые странные ошибки. – Vahid

Смежные вопросы