2012-05-31 90 views
3

我對WPF很新。我只是嘗試一些使用Grid和Listbox的佈局, ,但我有一些填充/間距/邊距/邊框(簡稱爲邊框 ),我無法脫身。網格和列表框有一些邊框我無法擺脫

邊框圍繞四個元素,元素本身沒有問題 並且它們之間沒有空間。

也嘗試過WPF Inspector,但是我找不到它來自哪裏。 沒有看到它。

這是我的XAML:

<Window x:Class="WpfElements.FourElements" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="FourElements" Height="701" Width="351"> 
<Grid Background="Red" Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <ListBox Margin="0" BorderThickness="0" Padding="0" Grid.Row="0" Grid.Column="0" Background="Lime" SelectionMode="Single" ItemsSource="{Binding Path=Texts}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch"> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 
       </Grid> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBox Text="{Binding ItemText}" Grid.Row="{Binding Path=Row}" Grid.Column="{Binding Path=Col}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0"></TextBox> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
     <ListBox.ItemContainerStyle> 
      <Style> 
       <Setter Property="Grid.Column" Value="{Binding Path=Col}"/> 
       <Setter Property="Grid.Row" Value="{Binding Path=Row}"/> 
       <Setter Property="ContentControl.HorizontalContentAlignment" Value="Stretch"/> 
       <Setter Property="ContentControl.VerticalContentAlignment" Value="Stretch"/> 
       <Setter Property="ContentControl.Margin" Value="0"/> 
       <Setter Property="ContentControl.Padding" Value="0"/> 
       <Setter Property="Control.BorderThickness" Value="0"/> 
      </Style> 
     </ListBox.ItemContainerStyle> 
    </ListBox> 
</Grid> 

希望有人能幫助我擺脫這個邊界。非常感謝!

+0

你能後的截圖外觀?您將在代表TextBox邊框的每個項目之間看到一條細線。 –

回答

6

的問題是內部的ListBoxTemplate第一Border,它有Padding設置爲1,1,1,1
它看起來像這樣

<Style TargetType="{x:Type ListBox}" ...> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ListBox}"> 
       <Border x:Name="Bd" 
         Padding="1"> 
       <!-- ... --> 

正如你可以在Template看到,Border名稱爲Bd。

要麼改變TemplateListBox或者在Loaded事件

設置爲0的XAML

<ListBox ... 
     Loaded="ListBox_Loaded"> 

後面的代碼

private void ListBox_Loaded(object sender, RoutedEventArgs e) 
{ 
    ListBox listBox = sender as ListBox; 
    Border Bd = listBox.Template.FindName("Bd", listBox) as Border; 
    Bd.Padding = new Thickness(0); 
} 
+0

你是對的!非常感謝你! –

+0

當然,很樂意幫助:) –

+0

我試圖設置ControlTemplate現在,但我無法弄清楚。你有鏈接給我,也許在哪裏解釋了該怎麼做? –

1

您是否嘗試過爲列表框或網格設置ControlTemplate?你應該能夠通過編寫自己的模板來擺脫邊界。

+0

謝謝,我會試試這個! –

+0

列表框中不需要的「邊框」實際上是1個像素。 –