Le Microsoft example code suivant contient les éléments suivants:WPF Border DesiredHeight
<Grid>
...
<Border Name="Content" ... >
...
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="True">
<Setter TargetName="ContentRow" Property="Height"
Value="{Binding ElementName=Content,Path=DesiredHeight}" />
</Trigger>
...
</ControlTemplate.Triggers>
Lorsque l'exécution, cependant, ce code génère l'erreur de liaison de données suivante:
System.Windows.Data Error: 39 : BindingExpression path error: 'DesiredHeight' property not found on 'object' ''Border' (Name='Content')'. BindingExpression:Path=DesiredHeight; DataItem='Border' (Name='Content'); target element is 'RowDefinition' (HashCode=2034711); target property is 'Height' (type 'GridLength')
Malgré cette erreur, le code fonctionne correctement. J'ai regardé à travers la documentation et DesiredHeight
ne semble pas être un membre de Border
. Quelqu'un peut-il expliquer d'où vient DesiredHeight
? Aussi, est-il possible de résoudre/supprimer cette erreur afin que ma sortie de programme soit propre?
D'accord, cela fonctionne (bien que DesiredSize.Height est un double). Donc, DesiredHeight ne fait que mapper à Border.DesiredSize.Height? Est-ce une sorte de propriété sans-papiers? –
Je suis sûr que ce n'est pas non documenté, le fait est que les contrôles XAML se dimensionnent en fonction de leur contenu, même si vous définissez la hauteur à 100, il peut changer pour toute autre raison, et la nouvelle hauteur et largeur seront contenues dans le Les propriétés ActualHeight et ActualWidth respectivement. Si vous souhaitez que vos contrôles aient une taille fixe, vous devez plutôt définir MinWidth et MinHeight, mais la plupart du temps, je ne le recommande pas. Principalement tout cela est de résoudre les problèmes de redimensionnement que nous avions avec WindowsApplications. – Carlo