scott lafoy
scott lafoy

Reputation: 1013

Adjust size after dynamically removing a controle

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

Answers (1)

scott lafoy
scott lafoy

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

Related Questions