WPF контролирует уже автоматически размер в зависимости от типа панели, в которой он находится.
Например, если ваш элемент управления находится в Grid
, он автоматически изменит свой размер, чтобы растянуть и заполнить все пространстводоступно для него.Если ваш элемент управления находится в StackPanel
, он автоматически изменит свой размер, чтобы занять то пространство, которое ему нужно, или, другими словами, любое пространство, которое занимает его Контент.
Так что, если вы хотите, чтобы ваш элемент управления былтого же размера, что и содержимое, не устанавливайте на нем размер и поместите UserControl
на панель, которая не растягивает дочерние элементы, например StackPanel
<StackPanel>
<local:MyUserControl />
</StackPanel>
илиоберните его Content
в элемент управления, который не растягивает его детей.
<UserControl ....>
<UserControl.Template>
<ControlTemplate>
<StackPanel>
<ContentPresenter />
</StackPanel>
</ControlTemplate>
</UserControl.Template>
</UserControl>