[WPF]コントロールサイズの固定について

タグの編集
投稿者 SSD  (社会人) 投稿日時 2023/4/13 16:36:45
WPFでWindowにDockPanelを配置し、3つのScrollViewerをDockしています。(Top,Right,Bottom)
また、それぞれのScrollView内にFrameを配置しています。
FrameにはPageを表示しており、コントロールの操作に応じて表示するPageを切り替えています。
BottomにDockしたScrollViewerはIsLastChildFill = TrueによってFill状態です。

Fill状態のScrollViewerのFrameのPage内にはDockPanel、Card(Material Design In XAML Toolkit)、DcokPanel、DataGridという順に親子関係になるようにコントロール配置しています。

DataGridにはDataTableをバインドしています。
列数が多いのでDataGridの幅に連動してその親のDockPanelの幅が拡張され、またその親のCardの幅が...
という具合に幅が連動してPage幅はScrollViewerの幅を超えているため、HorizontalScrollBarが有効になっています。

Pageの幅はScrollViewerと同じ幅にして、DataGridのScrollViewer.HorizontalScrollBarVisibility="Auto"
で水平方向のスクロールに対応したいと思い、Page幅を以下のようにしました。

Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ScrollViewer},Path=Width}"

ですが、実行すると幅が拡張されたままになってしまいます。
Pageが親コントロール以上の幅にならないようにするにはどうすればいいのでしょうか?