コンテンツ コントロールのサイズを動的に調整できるようにしたいと考えています。
簡単な例を次に示します。
...
<Slider x:Name="width" Minimum="40" Value="100" Maximum="300"/>
...
<ContentPresenter Width="{Binding Value, ElementName=width}" Content="Some value">
<ContentPresenter.ContentTemplate>
<DataTemplate>
<Grid MaxWidth="200" MinWidth="80">
<Rectangle Fill="Wheat" />
<TextBlock Text="{Binding}"/>
</Grid>
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
この例では、コンテンツ ContentPresenter の幅を、生成された子の最小幅と最大幅 (この場合は 80 ~ 200) 以内に収めたいと考えています。
明らかに、このような単純な例では、スライダーの範囲を変更するだけで済みますが、実際のシナリオはもっと複雑です。ポップアップ画面のサイズを生成されたコンテンツに制限しようとしています。コンテンツがどのようなものになるか事前にわからないため、ポップアップに明示的な範囲を設定することはできません。コンテンツはそれ自体を制限できる必要があります。
残念ながら、子の MaxWidth と MinWidth はほとんど無視されます。親が小さく設定されている場合、MinWidth はトリミングされます。MaxWidth を使用すると、多くの空きスペースが生じます。Width 値を動的に更新しているのと同じ場所に MaxWidth と MinWidth を設定する必要があるようです。