Il seguente Microsoft example code contiene quanto segue: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>
Quando termine, tuttavia, questo codice genera il seguente errore di associazione dati:
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')
Nonostante questo errore, il codice funziona correttamente. Ho esaminato la documentazione e DesiredHeight
non sembra essere un membro di Border
. Qualcuno può spiegare da dove proviene DesiredHeight
? Inoltre, c'è un modo per risolvere/sopprimere questo errore, quindi l'output del mio programma è pulito?
Va bene, che funziona (anche se DesiredSize.Height è una doppia). Quindi DesiredHeight si limita a mappare a Border.DesiredSize.Height? Questa è una sorta di proprietà non documentata? –
Sono sicuro che non è documentato, il fatto è che XAML controlla le dimensioni stesse in base al loro contenuto, anche se si imposta l'altezza su 100, potrebbe cambiare per qualsiasi altra ragione, e la nuova altezza e larghezza saranno contenute nel Proprietà ActualHeight e ActualWidth, rispettivamente. Se vuoi che i tuoi controlli abbiano una dimensione fissa, devi invece impostare MinWidth e MinHeight, ma la maggior parte delle volte non lo consiglio. Principalmente tutto ciò è per risolvere i problemi di ridimensionamento che abbiamo avuto con WindowsApplications. – Carlo