如何定义与其父级具有相同大小的ListBoxItem模板?

时间:2010-04-16 14:27:41

标签: wpf templates listboxitem

我使用以下代码:

<ListBox 
    x:Name="lbItems"            
    Grid.Row="1"
    Margin="2">
    <ListBox.Template>
        <ControlTemplate>
            <Border 
                Background="{StaticResource DarkerBrush}"                            
                Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type ListBox}, Mode=FindAncestor}}"
                BorderBrush="{StaticResource MediumBrush}"
                BorderThickness="0"
                CornerRadius="4">
                <ItemsPresenter />                            
            </Border>
        </ControlTemplate>
    </ListBox.Template>
</ListBox>

它可以工作,但我在输出窗口中看到了一个我要删除的异常。

  

System.Windows.Data信息:10:   无法使用获取值   绑定并没有有效的回退值   存在;使用默认值。   BindingExpression:路径= ActualWidth的;   的DataItem = NULL;目标元素是   'Border'(Name ='');目标属性是   '宽度'(类型'双')

可能我做的事情不是很完美,所以你有什么想法我如何改进我的代码

1 个答案:

答案 0 :(得分:2)

Width="{Binding ElementName=lbItems, Path=ActualWidth}" ?