2

さまざまなサブ要素が追加、削除、および/または折りたたまれた結果として、実行時にサイズを動的に変更する ScatterViewItem 内にコントロールをホストしています。ホスティングしている ScatterViewItem も、その子コントロールに適切に収まるようにサイズ変更したいと考えていますが、これを実現するのに苦労しています。さまざまなことを試しましたが、子コントロールの SizeChanged イベントにフックして ScatterViewItem の幅と高さを明示的に設定するのが最も近い方法ですが、この方法にはまだ問題があります。

ScatterViewItem とそのコンテンツを XAML で定義すると、ScatterViewItem のサイズが適切に設定されます。コンテンツのサイズが変更されたときに、実行時に同じ動作を強制したいと考えています。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

1

ここで説明するスタイルを設定してみましたか?

http://msdn.microsoft.com/en-us/library/ee957369.aspx

「コンテンツサイズへのバインド」の下?

コンテンツサイズへのバインド

ScatterViewの概要で説明されているように、デフォルトでは、ScatterViewItemは必ずしもそのコンテンツのサイズに拡大または縮小するわけではありません。ScatterViewItemのHeightプロパティとWidthプロパティを明示的に設定できますが、コンテンツが不明なサイズのコントロールである場合や、コンテンツのサイズが可変である場合があります。

このような場合は、ScatterViewItemのディメンションをコンテンツのディメンションにバインドすることをお勧めします。これを行うには、Styleオブジェクトを定義する必要があります(通常、メインアプリケーションウィンドウの[リソース]セクション内で)。次のコード例は、ScatterViewItemコントロールに適用してコンテンツのディメンションにバインドできるStyleオブジェクト宣言を示しています。

<Style x:Key="ScatterViewItemStyle" TargetType="{x:Type s:ScatterViewItem}">
    <Setter Property="MinWidth" Value="{Binding Path=Content.MinWidth, RelativeSource={RelativeSource Self}, Mode=OneWay}"/>
    <Setter Property="MinHeight" Value="{Binding Path=Content.MinHeight, RelativeSource={RelativeSource Self}, Mode=OneWay}"/>
    <Setter Property="MaxWidth" Value="{Binding Path=Content.MaxWidth, RelativeSource={RelativeSource Self}, Mode=OneWay}"/>
    <Setter Property="MaxHeight" Value="{Binding Path=Content.MaxHeight, RelativeSource={RelativeSource Self}, Mode=OneWay}"/>
    <Setter Property="Width" Value="{Binding Path=Content.Width, RelativeSource={RelativeSource Self}, Mode=TwoWay}"/>
    <Setter Property="Height" Value="{Binding Path=Content.Height, RelativeSource={RelativeSource Self}, Mode=TwoWay}"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type s:ScatterViewItem}">
                <ContentPresenter />
            </ControlTemplate>
        </Setter.Value>
    </Setter> </Style>

コンテンツの寸法を使用するScatterViewItemを作成する場合は、次のコード例に示すように、スタイルをScatterViewItemに適用します。

<s:ScatterViewItem Style="{StaticResource ScatterViewItemStyle}">
     <Rectangle  Height="250" Width="250" Fill="Red" /> </s:ScatterViewItem>
于 2011-07-12T19:23:20.967 に答える