2011-04-13 3 views

답변

0

나는 이것에 대한 해결책을 스스로 찾았습니다. 측정하기 전에 팝업의 "IsOpen"을 true로 설정 한 다음 다시 false로 설정해야합니다. 내가 할 수있는 유일한 방법이야.

2
<ComboBox x:Name="comboBox" Height="20" Width="120"> 
    <ComboBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel SizeChanged="StackPanel_SizeChanged"/> 
     </ItemsPanelTemplate> 
    </ComboBox.ItemsPanel> 
</ComboBox> 

private void StackPanel_SizeChanged(object sender, SizeChangedEventArgs e) 
{ 
    var w= e.NewSize.Width; 
    var h= e.NewSizeHeight; 
} 

하지만 좋은 방법은 아닙니다.

+0

감사하지만 드롭 다운 크기가 필요합니다. 콤보 박스가 필요하지 않습니다. – phm

+0

이것은 어떻습니까? – Nario

+0

여전히 작동하지 않습니다 : | – phm

1

실제로 팝업을 렌더링하지 않으면 실제 크기를 가져올 수 없습니다. 이는 팝업이 숨겨져있는 경우 ActualSizes가 0이됨을 의미합니다. 이것은 WPF가 레이아웃 및 렌더링 논리를 수행 한 결과입니다.

팝업창에서 Measure 패스를 수행하면 팝업 높이를 얻을 수 있습니다. 아직 팝업이 생성되지 않은 경우 문제가 계속 발생합니다. (그리고 처음 표시 될 때까지 생성되지 않을 수도 있습니다.)

관련 문제