2013-07-17 1 views
0

, 나는 아직도 정말 혼란 스러워요 :WPF scrollviewer 및 stackpanel이 설정된 크기와 반대로 자식에게 무한 크기를 제공하는지 여부를 결정하는 것은 무엇입니까? 이 측정에서 availableSize로 주어지고 StackPanel에의 자녀 (signalgraph) (292, 인피니티)을 초래하기 때문에 측정시

<Window x:Class="paneltesting.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:wpfExp="clr-namespace:WpfExperimental" 
    Title="Window1" Height="300" Width="300"> 

    <StackPanel 
    > 
     <wpfExp:SignalGraph/> 
    </StackPanel> 
</Window> 

세트 크기 아이의 캔버스 동안 사용 가능한 크기에 대해 (무한대, 무한대) 지정됩니다. 나는 이것이 창과의 상호 작용과 관련이 있다고 가정하지만, 실제로 무슨 일이 일어나고 있는지에 관해서는 혼란 스럽다. 에서 ScrollViewer를 사용하는 경우

<Canvas Width="100" Height="100"> 
    <StackPanel SizeChanged="ScrollViewer_SizeChanged" 
    > 
     <wpfExp:SignalGraph/> 
    </StackPanel> 
</Canvas> 

같은 일이 발생합니다. scrollviewer가 자식에게 크기를 제공하는 방법을 이해할 수 있기를 원했습니다. controltemplate에서 패널을 변경하면 scrollviewer 크기가 무한 공간 대신 ​​자식에 availableSize로 전달되는 scrollviewer가 발생할 수 있는지 궁금합니다.

나는 이미 문제를 해결했으나 이해하고 싶다. 그래서 내가 원하는 행동을 취하는 데 훨씬 쉬운 방법이 없다는 것을 확신한다.

답변

2

StackPanel 방향, 방향이 수직이므로 무한한 높이 방향으로 무한대로 자식을 측정; 다른 오리엔테이션은 일반적으로 주어진 제약을받습니다.

Canvas은 항상 무한 한 너비와 높이로 자식을 측정합니다. ScrollViewer를 들어

, 내용이 IScrollInfo를 구현하는 경우 (즉, 그것은 스크롤 기능을 제공합니다)와 그 CanContentScroll는 아이가 그것을 가능하게, 주어진 제약 조건 뺀 스크롤에 필요한 금액을 기준으로 측정되는 사실이다 (들) 그들이 보이면. 물론 스크롤을 처리해야합니다.

+0

내 눈이 열렸습니다! 고맙습니다 :) –

관련 문제