2011-01-04 1 views
1

У меня есть простые элементы управления с пользовательским datatemplate, шаблон содержит только текстовый блок с рамкой. Все элементы должны отображаться вертикально один за другим, но некоторые элементы имеют дополнительную границу. Как его удалить?Wpf ItemsControl с datatemplate, проблема с удвоенной рамкой для некоторых элементов

Я хочу, чтобы достичь чего-то похожее на Enso пусковая, это выглядит как alt text

Моя реализация выглядит следующим образом

wpf textblock with border

здесь мой XAML код:

<Window x:Class="winmole.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" 
    x:Name="hostWindow" 
    Height="Auto" 
    MinHeight="100" 
    MinWidth="100" 
    Width="Auto" 
    Padding="10" 
    AllowsTransparency="True" WindowStyle="None" Background="Transparent" 
    Top="0" 
    Left="0" 
    SizeToContent="WidthAndHeight" 
    Topmost="True" 
    Loaded="Window_Loaded" 
    KeyUp="Window_KeyUp" 
    > 
<Window.Resources> 

    <!--Simple data template for Items--> 
    <DataTemplate x:Key="itemsTemplate"> 
     <Border Background="Black" Opacity="0.9" HorizontalAlignment="Left" CornerRadius="0,2,2,0"> 
      <TextBlock Text="{Binding Path=Title}" 
       TextWrapping="Wrap" 
       FontFamily="Georgia" FontSize="30" 
       Height="Auto" 
       HorizontalAlignment="Left" 
       VerticalAlignment="Stretch" 
       TextAlignment="Left" Padding="5" Margin="0" Foreground="Yellow"/> 

     </Border> 

    </DataTemplate> 
</Window.Resources> 

<DockPanel> 

    <ItemsControl DockPanel.Dock="Bottom" Name="itcPrompt" 
        ItemsSource="{Binding ElementName=hostWindow, Path=DataItems}" 
       ItemTemplate="{StaticResource itemsTemplate}" > 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel Orientation="Vertical" /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
    </ItemsControl> 

</DockPanel> 

+0

Он появляется все детали имеют границы; что вы имеете в виду, что «некоторые» предметов имеют дополнительную границу? –

+0

в этом примере все элементы имеют границу, но когда я показываю папки с диска c: \, есть некоторые элементы, которые не имеют этой границы. В любом случае, как удалить эту границу? – ksopyla

+0

Когда я меняю TextBlock на Label, проблема исчезла. Может ли кто-нибудь объяснить это поведение? – ksopyla

ответ

1

Если я правильно понимаю ваш вопрос: Попробуйте установить SnapsToDevicePixels="True" на границе

<Border SnapsToDevicePixels="True" Background="Black" Opacity="0.9" ... 
+0

К сожалению, это не сработало. Я редактирую свой вопрос и добавляю, какова моя цель. Может быть, кто-то знает другой способ его реализации. – ksopyla

+0

Хмм, у меня есть копия и вставка кода, и он не работает для меня, и UseLayoutRounding = «True» UseLayoutRounding = «False» дает те же результаты. Но спасибо за помощь. – ksopyla

+0

как вы писали в предыдущем комментарии set SnapToDevicePixels = "True" для Border решил мою проблему – ksopyla