2009-01-20 118 views
17

我试图为我的wpf应用程序中的一个业务对象定义一个dataTemplate,它的一个集合被绑定到一个ListBox。wpf边界控制跨越listboxItem的宽度

<UserControl.Resources> 
    <DataTemplate x:Key="ResizedItemsDataTemplate" DataType="{x:Type resizer:ResizeMonitorItem}"> 
       <Border x:Name="bdr" BorderBrush="Blue" 
            BorderThickness="1" 
            CornerRadius="2" 
            Width="auto" 
            HorizontalAlignment="Stretch" 
            VerticalAlignment="Stretch"> 
        <Grid Margin="2"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="14"></RowDefinition> 
          <RowDefinition Height="14"></RowDefinition> 
         </Grid.RowDefinitions> 


         <TextBlock Grid.Row="0" Text="{Binding SaveAsFileName}"></TextBlock> 
         <TextBlock Grid.Row="1" Text="{Binding ResizedImageFilePath}"></TextBlock> 
        </Grid> 
      </Border> 
    </DataTemplate> 
</UserControl.Resources> 
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0">  
    <Border BorderThickness="0,0,0,5" BorderBrush="DarkGray" > 
     <ListBox x:Name="ListBoxResizeItems" ItemsSource="{Binding Path=ResizeItems}" BorderThickness="0" ItemTemplate="{DynamicResource ResizedItemsDataTemplate}"> 
     </ListBox> 
    </Border> 
</Grid> 

我怎样才能用X定义的边界:名称= BDR跨越每一个列表框项的全宽?目前它只能跨越其中的文本块,而不需要填充listboxitem的全部宽度,并且对于每个listboxitem也是不同的。

回答

52

这可能与ListBoxItems本身不占用ListBox的全部宽度有关。将HorizontalContentAlignment="Stretch"属性添加到您的ListBox并查看它是否拉伸单个项目以填充宽度。

+0

尼斯。不知道那个属性。太糟糕了,默认值是Left而不是Stretch,这导致了这种行为。 – Gishu 2009-01-20 11:48:41

+0

真棒,我有完全相同的问题,这解决了它。 – vargonian 2010-11-01 23:37:22

1

解决了它。诀窍是在您的列表框上设置Horizo​​ntalContentAlignment =“Stretch”,以使其内容伸展整个宽度,而不是只适合内容。

<ListBox x:Name="ListBoxResizeItems" 
       HorizontalContentAlignment="Stretch" 
       ItemsSource="{Binding Path=ResizeItems}" 
       BorderThickness="0"           
       ItemTemplate="{DynamicResource ResizedItemsDataTemplate}" > 
     </ListBox> 

对不起马特,刚刚得到你的答案,因为我正在打这篇文章。

1

Horizo​​ntalContentAlignment是一个不错的,干净的解决方案,相比我想要的。谢谢!

这里是几乎工作,但有时做了一个对话框,动画本身越走越宽永:

Width="{Binding ActualWidth, 
     RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}"