Я хотел бы иметь возможность динамически настраивать размер элемента управления содержимым.
Вот простой пример:
...
<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 приводит к множеству пустого пространства. Похоже, мне придется установить MaxWidth и MinWidth в том же месте, где я динамически обновляю значение Width.