2013-01-09 84 views
0

我有一個自定義圖形用戶控件,我已將它放在堆棧面板中。最多可以在堆棧面板中隨時顯示4個圖形控件。我有複選框來控制圖形的可見性。動態刪除控件後調整大小

我遇到的問題是,當我取消選中複選框時,堆疊面板中的其餘圖形不會調整大小以彌補額外的空間。我在尋找的是當所有圖形都可見時,它們適合屏幕上的不滾動,但如果只有一個圖形可見,我希望它的大小調整以佔用所有的空間。

任何人有任何想法?

這是我到目前爲止有:

<UniformGrid Grid.Row="2" Name="uniformGrid1" > 
       <UniformGrid.Resources> 
        <Utilities:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 
       </UniformGrid.Resources> 

      <StackPanel Grid.Row="1" Height="700" Name="graphControls" Orientation="Vertical"> 
       <!--Cross Correlation Graph--> 
       <View:Graph Width="Auto" Height="Auto" MinHeight="175" Margin="5" x:Name="CrossCorrelationGraph" x:FieldModifier="public"             
         Visibility="{Binding Path=IsChecked, ElementName=crossCorrelationViewCheck, Converter={StaticResource BooleanToVisibilityConverter}}" 
         GraphMetadata="{Binding Path=Processor.CrossCorrelation.CrossCorrelationGraphData}" 
         StartPointAlignment="CenterVertical" 
         GraphTitle="Cross Correlation" 
         IsDetailed="True"/> 

       <!--Power Spectrum Graph--> 
       <View:Graph Width="Auto" Height="Auto" MinHeight="175" Margin="5" x:Name="PowerSpectrumGraph" x:FieldModifier="public" 
         Visibility="{Binding Path=IsChecked, ElementName=powerSpectrumViewCheck, Converter={StaticResource BooleanToVisibilityConverter}}" 
         GraphMetadata="{Binding Path=Processor.CrossCorrelation.PowerSpectrumGraphData}" 
         StartPointAlignment="Left" 
         GraphTitle="Power Spectrum" 
         IsDetailed="True"/> 

      <!--Phase Spectrum--> 
       <View:Graph Width="Auto" Height="Auto" MinHeight="175" Margin="5" x:Name="PhaseSpectrum" x:FieldModifier="public" 
         Visibility="{Binding Path=IsChecked, ElementName=phaseSpectrumViewCheck, Converter={StaticResource BooleanToVisibilityConverter}}" 
         GraphMetadata="{Binding Path=Processor.CrossCorrelation.PhaseSpectrumGraphData}" 
         StartPointAlignment="CenterHorizontal" 
         GraphTitle="Cross Phase Spectrum" 
         IsDetailed="True"/> 

       <!--Amplitude Spectrum--> 
       <View:Graph Width="Auto" Height="Auto" MinHeight="175" Margin="5" x:Name="AmplitudeSpectrumGraph" x:FieldModifier="public" 
         Visibility="{Binding Path=IsChecked, ElementName=amplitudeSpectrumViewCheck, Converter={StaticResource BooleanToVisibilityConverter}}" 
         StartPointAlignment="Left" 
         GraphTitle="Cross Amplitude Spectrum" 
         IsDetailed="True"/> 
      </StackPanel> 
     </UniformGrid> 

回答

1

玩弄了一會兒後,我發現我的解決方案。我會在這裏發佈,以便其他人可以受益。

首先,我丟棄了堆疊面板,並使用了UniformGrid。我將UniformGrid上的columns屬性設置爲1,這樣所有內容都會排在第一位。現在一切正常。

<UniformGrid Grid.Row="2" Height="Auto" Columns="1">     
        <UniformGrid.Resources> 
         <Utilities:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 
        </UniformGrid.Resources> 
        <!--Cross Correlation Graph--> 
      <View:Graph Width="Auto" Height="Auto" MinHeight="175" Margin="5" x:Name="CrossCorrelationGraph" x:FieldModifier="public"             
         Visibility="{Binding Path=IsChecked, ElementName=crossCorrelationViewCheck, Converter={StaticResource BooleanToVisibilityConverter}}" 
         GraphMetadata="{Binding Path=Processor.CrossCorrelation.CrossCorrelationGraphData}" 
         StartPointAlignment="CenterVertical" 
         GraphTitle="Cross Correlation" 
         IsDetailed="True"/> 

        <!--Power Spectrum Graph--> 
      <View:Graph Width="Auto" Height="Auto" MinHeight="175" Margin="5" x:Name="PowerSpectrumGraph" x:FieldModifier="public" 
         Visibility="{Binding Path=IsChecked, ElementName=powerSpectrumViewCheck, Converter={StaticResource BooleanToVisibilityConverter}}" 
         GraphMetadata="{Binding Path=Processor.CrossCorrelation.PowerSpectrumGraphData}" 
         StartPointAlignment="Left" 
         GraphTitle="Power Spectrum" 
         IsDetailed="True"/> 

        <!--Phase Spectrum--> 
      <View:Graph Width="Auto" Height="Auto" MinHeight="175" Margin="5" x:Name="PhaseSpectrum" x:FieldModifier="public" 
         Visibility="{Binding Path=IsChecked, ElementName=phaseSpectrumViewCheck, Converter={StaticResource BooleanToVisibilityConverter}}" 
         GraphMetadata="{Binding Path=Processor.CrossCorrelation.PhaseSpectrumGraphData}" 
         StartPointAlignment="CenterHorizontal" 
         GraphTitle="Cross Phase Spectrum" 
         IsDetailed="True"/> 

        <!--Amplitude Spectrum--> 
      <View:Graph Width="Auto" Height="Auto" MinHeight="175" Margin="5" x:Name="AmplitudeSpectrumGraph" x:FieldModifier="public" 
         Visibility="{Binding Path=IsChecked, ElementName=amplitudeSpectrumViewCheck, Converter={StaticResource BooleanToVisibilityConverter}}" 
         StartPointAlignment="Left" 
         GraphTitle="Cross Amplitude Spectrum" 
         IsDetailed="True"/> 
       </UniformGrid>