2016-06-08 5 views
1

У меня есть приложение WPF со списком, показывающим некоторые данные. Когда у меня есть список в центре окна, а окно имеет неровную ширину, с правой стороны список расплывчато. (Зеленый - прямоугольник, синяя часть - текстовое поле) the (green) listbox has a blurry right side Я попытался применить SnapsToDevicePixels практически везде без результата. (Я знаю, что это должно быть унаследовано дочерними элементами, но im почти выдергивает мои волосы)WPF Listbox border на правой стороне размыты

Я мог бы преодолеть это, установив его на HorizontalAlignment="Left" и всегда есть фиксированный размер, но я знаю, что я просто отсутствую что-то, поскольку текстовое поле действительно отображается правильно.

Вот мой (как можно более чистым) код, показывающий поведение:

<Window x:Class="WpfApplication2.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" 
    Height="200" 
    Width="401px" 
    Background="Red" 
    SnapsToDevicePixels="True"> 
<Grid> 
    <Rectangle Width="200" Height="50" Fill="Blue" VerticalAlignment="Top" /> 
    <ListBox Height="94" VerticalAlignment="Bottom" Width="200px" > 
     <ListBoxItem>1</ListBoxItem> 
     <ListBox.Template> 
      <ControlTemplate TargetType="ListBox"> 
       <ScrollViewer Margin="0" Padding="0" SnapsToDevicePixels="True"> 
        <StackPanel Margin="0" IsItemsHost="True" Width="200" Background="GreenYellow"/> 
       </ScrollViewer> 
      </ControlTemplate> 
     </ListBox.Template> 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="SnapsToDevicePixels" Value="True"/> 
       <Setter Property="Width" Value="200"/> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="ListBoxItem"> 
          <Grid Background="Green" Height="40" SnapsToDevicePixels="True"> 
           <ContentPresenter SnapsToDevicePixels="True"/> 
          </Grid> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ListBox.ItemContainerStyle> 
    </ListBox> 
</Grid> 
</Window> 
+0

Попробуйте отказаться от содержимого ListBox от 200. – Paparazzi

ответ

1

Набор UseLayoutRounding="True" на Window.

Я также рекомендую установить TextOptions.TextFormattingMode="Display" для улучшения четкости текста.

+0

... Иногда ... Я читал, что это было в основном одно и то же - по-видимому, это не так. благодаря – user1515791

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