1

StackPanel と TreeView を含むユーザー コントロールがあります。すべてのコントロールには Height="Auto" があります

ウィンドウでカスタム コントロールを使用して高さを設定すると、Height=800 とします。スタック パネルはこの高さまで大きくなりますが、TreeView は高さを自動調整しません。

ユーザーコントロール:

<UserControl x:Class="WPFDataBinding.ucCompanyTreeView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="200" Width="300" Loaded="UserControl_Loaded">
<StackPanel>
    <TextBlock Background="#505050" Foreground="Gold">Companys</TextBlock>
    <TreeView Name="myTreeView" ItemTemplate="{StaticResource DetailTemplate}">
    </TreeView>
</StackPanel>

Window1.xaml:

<StackPanel Orientation="Horizontal">
    <local:ucCompanyTreeView Width="400" Height="600">
    </local:ucCompanyTreeView>
</StackPanel>

ユーザー コントロール内のスタック パネルの高さは増加しますが、ツリー ビューは増加しません。ツリー ビューをグリッドに配置しようとしましたが、どこでも同じ設定 Height="Auto"、同じ設定 VerticalAlignment="Strech" どこでも同じです

Treeview はデータ バインドされていたので、データがバインドされた後の自動サイズ変更だと思っていましたが、このデータ バインドを削除しても同じ結果が得られました。

サイズ変更イベントを通じてそれを行うことができます....しかし、以前にこの問題が発生したことがあり、「一部の」コントロールの高さ継承の背後にあるロジックを理解したいだけです。

4

1 に答える 1

3

ユーザー コントロールの StackPanel を DockPanel に置き換える場合、TreeView はデフォルトで DockPanel を埋めます...

<DockPanel>
    <TextBlock DockPanel.Dock="Top" Background="#505050" Foreground="Gold">Companys</TextBlock>
    <TreeView Name="myTreeView" ItemTemplate="{StaticResource DetailTemplate}">
    </TreeView>
</DockPanel>

方法: StackPanel と DockPanel のどちらかを選択する

于 2009-09-05T05:17:39.830 に答える