2010-04-16 13 views
2

J'utilise le code suivant:Comment définir un Template ListBoxItem qui a la même taille que son parent?

<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> 

cela fonctionne, mais je vois une exception dans la fenêtre de sortie que je voudrais retirer.

System.Windows.Data Informations: 10: Impossible de récupérer la valeur en utilisant la et aucune valeur de liaison de secours valide existe; en utilisant par défaut à la place. BindingExpression: Path = ActualWidth; DataItem = null; l'élément cible est 'Border' (Name = ''); cible est la propriété « Largeur » (type « Double »)

Probablement que je fais quelque chose de pas tout à fait raison, si vous avez une idée comment puis-je améliorer mon code?

Répondre

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

merci, dans ce cas, il a résolu le problème, mais il arrive assez souvent aussi sur les contrôles par défaut comme ComboBoxItem – Drake