2009-05-15 4 views
4

Я уже немного ударился головой о стену с этим.Проблема с изменением размера ContentControl

У меня есть настраиваемый элемент управления, который происходит из ContentControl - он отлично работает, ИСКЛЮЧАЕТ, что он не будет изменять размер, чтобы соответствовать его родительскому, декларативно или программно.

Пользовательский элемент управления определяется в (в конечном счете) контент-презентатором, и это правильный размер, но мой контроль просто НЕ будет сам по себе соответствовать.

(sample.MyControl) - 400x267 
- (System.Windows.Controls.ContentPresenter) - 979x569 

Даже когда я явно задать ширину и высоту (в нужный момент), размер не "прилипнет"

 Debug.WriteLine(string.Format("MyControl {0}: Size is {1}x{2} ({3}/{4})", 
      GetHashCode(), this.ActualWidth, this.ActualHeight, 
      this.HorizontalAlignment, this.VerticalAlignment)); 

     Debug.WriteLine(string.Format("Parent is {0}x{1} ({2}/{3})", 
             parent.ActualWidth, parent.ActualHeight, 
             parent.HorizontalAlignment, parent.VerticalAlignment)); 

     this.Width = parent.ActualWidth; 
     this.Height = parent.ActualHeight; 

     Debug.WriteLine(string.Format("MyControl {0}: New size is {1}x{2}", 
      GetHashCode(), this.ActualWidth, this.ActualHeight)); 

Приведенный выше код дает:

MyControl 36022757: Size is 400x267 (Stretch/Stretch) 
Parent is 979x569 (Stretch/Stretch) 
MyControl 36022757: New size is 400x267 

Зачем! О боги Почему!

У кого-нибудь есть идеи?

ответ

17

Вам нужно просто добавить HorizontalContentAlignment="Stretch" и VerticalContentAlignment="Stretch" к вашему контролю:

<ContentControl HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"> 
    ... 
</ContentControl> 

В таких случаях Silverlight Spy инструмента может быть полезен для отладки макета во время выполнения.

Попробуйте запустить приложение в этом инструменте, и вы сможете просматривать все элементы xaml и даже изменять некоторые свойства во время выполнения.

+0

Это решило проблему для нас, спасибо! +1 –

+0

Хм, я надеялся, что это сработает для той же проблемы в WPF, хотя исправление, похоже, ничего не меняет. :( – Domokun

+0

Я знал об этом все время - получается, что мне нужно было отформатировать контейнер, чтобы применить их к Content Control, который был обернут вокруг моего элемента управления. – Rammesses