これは私のコードです。 StackPanelはUserControlに直接存在することに注意してください。WrapPanelを親の幅に合わせる
<StackPanel Orientation="Horizontal">
<ScrollViewer
Width="450"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
>
<Rectangle Width="400" Height="4000" Fill="BlanchedAlmond"></Rectangle>
</ScrollViewer>
<ScrollViewer
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
>
<ItemsControl
BorderBrush="Green"
BorderThickness="2"
ItemsSource="{Binding Path=MyObservableCollection}"
ItemTemplate="{StaticResource FatTemplate}"
>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel
Orientation="Horizontal"
>
</WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
</StackPanel>
(コードEDITED)は、スクロールビューアの内容はirrevelantあるbeacause長方形がちょうどTHERであることを
注意。
問題がある:WrapPanelはちょうど水平にしてdosentラップを拡大...
私はいくつかの解決策を見つけました。
1- WrapPanelの絶対幅を指定します(ただし、ウィンドウのサイズはウィンドウのサイズに合わせて変更されます)。
2 ItemsControlまたはScrollViewer(このような限られた状況でScrollViewerがうまく機能しました)の親幅に幅をバインドします。
Width="{Binding RelativeSource=
{RelativeSource FindAncestor,
AncestorType={x:Type ScrollViewer}},
Path=ActualWidth}"
この手法の問題点は、あなたがのStackPanelやグリッドでそれに次のコントロールを得た場合、あなたはそれの横に、親のサイズマイナスコントロールのにバインドする必要があるということです。彼らはハードのものを来る。
、あなたがConverterParameterに渡す値をバインドカント以来Width="{Binding RelativeSource=
{RelativeSource FindAncestor,
AncestorType={x:Type UserControl}},
Path=ActualWidth,
Converter={StaticResource Convertisseur_Size_WXYZ},
ConverterParameter=-260}"
しかし、それでもまだ、私は数では、数学的な演算を適用し、私のコンバータは、それは親の幅だとそう、私はguiven幅をsubstractできrecived建て
ConverterParameter={Binding ...} (dosent work)
私は
、私は私のユーザーコントロールを簡単に保守になりたい、私のWrapPanelとScrollViewerのがよくリサイズに私のアプリのサイズを変更できるようにしたいです0
親コントロールのTypeに依存している大規模なバインディング式よりもコードをきれいにしたいと思います。
私の質問は次のとおりです。もっと良い解決策はありますか?
注:不明な点があれば、詳細を追加できます。
StackPanelの代わりにグリッドでうまく動作しますか、それはStackPanelなどのサイズ変更バグです。 – Gab
私はそれがバグだとは思わない。グリッドセル内にコントロールを配置すると、デフォルトではそのセルの空き領域に完全に収まるサイズになります。 StackPanelはそれをしません。 StackPanelの代わりに2つのセルを持つGridを使用できない理由はありますか? – haagel
私はちょうどグリッドを使用するかもしれません。StackPanelは、コードを見ると少し目立たないように見えましたが、ケント氏によると、問題が発生します。 – Gab