Reputation: 1013
I have a custom graph user control, I have placed it in a stack panel. There is a maximum of 4 graph controls that can be shown at any time in the stack panel. I have check boxes to control the visibility of the graphs.
The problem I am having is when I un select a checkbox the remaining graphs in the stack panel do not resize to make up for the extra room. What I am looking for is when all graphs are visible they fit on the screen with no scrolling, but if only one graph is visible I want its size to adjust to take up all the room.
Anyone have any ideas?
This is what I have so far:
<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>
Upvotes: 0
Views: 109
Reputation: 1013
After playing around for a while I have found my solution. I will post it here so others can benefit.
First of all I dropped the stack panel, and just used the UniformGrid. I set the columns property on the UniformGrid to 1 so everything would line one on top of the other. Everything Works great now.
<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>
Upvotes: 1