0

カスタム グラフ ユーザー コントロールがあり、スタック パネルに配置しました。スタック パネルにいつでも表示できる最大 4 つのグラフ コントロールがあります。グラフの表示を制御するチェック ボックスがあります。

私が抱えている問題は、チェックボックスの選択を解除すると、スタック パネルの残りのグラフのサイズが変更されず、余分なスペースが埋められないことです。私が探しているのは、すべてのグラフが表示されている場合、スクロールせずに画面に収まりますが、グラフが1つしか表示されていない場合は、そのサイズを調整してすべての部屋を占有することです.

誰にもアイデアはありますか?

これは私がこれまでに持っているものです:

<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>
4

1 に答える 1

1

しばらく遊んだ後、解決策を見つけました。他の人が利益を得ることができるように、ここに投稿します。

まず、スタック パネルをドロップし、UniformGrid を使用しました。UniformGrid の列プロパティを 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>
于 2013-01-09T20:53:23.240 に答える