次Microsoft example codeには、次のものが含まれていますWPFボーダー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>
実行は、しかし、このコードは、次のデータバインディングエラーが発生した場合:このエラーにもかかわらず
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')
を、コードが正しく動作します。私は文書を見て、DesiredHeight
はBorder
のメンバーではないようです。誰でもDesiredHeight
がどこから来ているのか説明できますか?また、私のプログラムの出力がきれいであるように、このエラーを解決/抑止する方法はありますか?
いいえ、それは動作します(DesiredSize.Heightはdoubleです)。それでDesiredHeightはBorder.DesiredSize.Heightにマップするだけですか?これは何らかの非公式の不動産ですか? –
これはドキュメント化されていないと確信しています。つまり、高さを100に設定しても、XAMLがコンテンツに基づいてサイズを制御していて、それ以外の理由で変更する可能性があります。 ActualHeightプロパティとActualWidthプロパティです。コントロールのサイズを固定したい場合は、代わりにMinWidthとMinHeightを設定する必要がありますが、ほとんどの場合はこれをお勧めしません。主にこれは、WindowsApplicationsで発生したサイズ変更の問題を解決することです。 – Carlo