2010-06-11 67 views
1

我想要創建按鈕列表,並且我希望按鈕遍佈列表項空間。這裏是我有:把按鈕放在列表框中,它將拉伸到它的寬度

<ListBox Margin="44,54,134,0" Name="listView1" Height="64" > 
     <Button Height="20"></Button> 
     <Button Height="20"></Button>    
    </ListBox> 

結果是:

alt text http://img251.imageshack.us/img251/4050/samplec.png

第一張圖

我想是第二張圖片,但按鈕的右側堅持列表的右側。我試圖在ItemTemplate中綁定列表框的寬度,但這並不適用於所有情況下工作(如果寬度自動)

感謝, 安德烈

回答

2
<ListBox Margin="44,54,134,0" Name="listView1" Height="64" HorizontalContentAlignment="Stretch"> 
    <Button Height="20"></Button> 
    <Button Height="20"></Button> 
</ListBox> 
從安德烈

編輯

如果你想要這個解決方案是完美的添加這些行:

 <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="Padding" Value="0"></Setter> 
      </Style> 
     </ListBox.ItemContainerStyle> 

他們將消除在左邊的討厭的差距,使列表不對稱

+0

您也可以申請保證金,如果你喜歡控制按鈕,可調節的差距左右;您可以使用負邊距來補償ListBoxItem容器中的填充而不重新設置容器。缺點是您必須將邊距應用於每個按鈕。 – 2010-06-11 17:04:16

0

這裏是我如何設法解決這個問題。這是更靈活,但它是真正的開銷對於這樣一個簡單的任務

<ListBox ItemsSource="{Binding}"> 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ListBoxItem}"> 
          <Grid> 
           <Button Height="20"> 
            <ContentPresenter></ContentPresenter> 
           </Button> 
          </Grid> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ListBox.ItemContainerStyle> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding}"></TextBlock> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox>