调整WPF布局控件

时间:2009-07-30 08:00:53

标签: wpf layout

在WPF UI应用程序中,我有4个控件和3个单选按钮(比如写,读和加载)。我也正确对齐它们。

4个控件是:1。带有listview的Tabcontrol 2.带有复选框的Stackpanel 3.带有文本框和浏览按钮的Stackpanel(orientation - Horizantal)4。带有Textblock和Listview的堆栈面板。

我的问题是,  对于加载RadioButton,我应该将所有4个控件垂直堆叠。 (这没有问题,完成了......)

对于Write按钮,控件2和3应该是不可见的,控件1和4应该填充该区域。

  

ctrl ht
       1 150
       2 100        3 30
       4 200

当我按下写入时,ctrl 2 n 3 shuld变为不可见,ctrl 1高度应为(150 + 75),ctrl 4应为(200 + 55).. 这使得ctrl1下限应该下移到75像素,而ctrl 4上限应该是55像素以上..

请帮我这样做.. 我在这个WPF应用程序中使用XAML和C#

感谢 RAMM

2 个答案:

答案 0 :(得分:0)

即使我觉得我的解释令人困惑。我将提供xaml代码..

我添加了所有4个垂直堆叠的控件..对于rdbtn 1,控件3不可用,控件2应该拉伸到下(其上限保持不变但下限应该增加)和控件4(上限应该伸展,下限保持不变..)我的意思是点击rdbtn 1 ..只能看到控制1,3和4并占据整个空间......

希望我现在明确表示:)

Xaml代码:

  <StackPanel Orientation="Vertical" Name="stkPnlParent" Background="OldLace" >
            <Grid >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition  Height="60"/>
                    <RowDefinition Height="220"/>
                    <RowDefinition Height="150"/>
                    <RowDefinition Height="30"/>
                    <RowDefinition Height="100"/>
                    <RowDefinition Height="62"/>
                </Grid.RowDefinitions>

控制1

<GroupBox Grid.Column="0" Grid.Row="0" Header="Browse Data" Name="grpBxBrowseData" >
                    <StackPanel  Orientation="Horizontal">
                        <Label Name="lblBrowseData"  Content="Path :" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Width="60" Height="30"  ></Label>
                        <TextBox Name="txtBxBrowse" Text="Please enter the path to Browse" HorizontalAlignment="Center" VerticalAlignment="Center" Width="800" Height="30" ></TextBox>
                        <Button  Name="btnBrowseButton"  ToolTip="Browse for Path" HorizontalAlignment="Right" VerticalAlignment="Center" Width="90" Height="30" Margin="30,0,0,0">Browse</Button>
                    </StackPanel>
                </GroupBox>

控制2

   <TabControl  Grid.Column="0" Grid.Row="1" Name="tbCtrlLaunchInfo" VerticalAlignment="Top" >
                    <TabItem Name ="tbLaunchInfo" HorizontalAlignment="Left" >
                        <TabItem.Header>
                            <StackPanel Orientation="Horizontal">
                                <Label>Launch Informations</Label>
                            </StackPanel>
                        </TabItem.Header>

                        <!--<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Width="Auto">-->

                        <Grid Name="grdLaunchDetails" Height="200" Width="Auto"  HorizontalAlignment="Left" VerticalAlignment="Top">
                            <Grid >
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="200"></ColumnDefinition>
                                    <ColumnDefinition Width="660"></ColumnDefinition>
                                    <ColumnDefinition Width="178"></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition />
                                </Grid.RowDefinitions>
                            </Grid>


                            <ListView Name="lstviewOfOwners" HorizontalAlignment="Left" >
                                <ListView.View >
                                    <GridView >
                                        <GridViewColumn Header="WorkBook" Width="200" DisplayMemberBinding="{Binding AnyWorkbook}" />
                                        <GridViewColumn Header="Description" Width="660" DisplayMemberBinding="{Binding DescName}" />
                                        <GridViewColumn Header="Date" Width="178" DisplayMemberBinding="{Binding WorkbookDate}" />
                                    </GridView>
                                </ListView.View>
                            </ListView>


                        </Grid>
                        <!--</ScrollViewer>-->
                    </TabItem>
                </TabControl>

控制3

 <Border Grid.Column="0" Grid.Row="2" Name="brdrTWB" BorderThickness="3" BorderBrush="Brown">

                    <StackPanel  Name="stkPnlCheckBoxes" Orientation="Vertical">

                        <TextBlock Name="txtBlkChekBox" Background="LightBlue" Height="25" Text="Team Work Book" ></TextBlock>

                        <CheckBox  HorizontalAlignment="Left" Width="90" Height="25" Margin="10,0,0,5" >Select All</CheckBox>


                        <StackPanel  Orientation="Horizontal" Height="20" >
                            <CheckBox Margin="10,0,0,0" Height="13.34" HorizontalAlignment="Left" Width="120" >Team Relative Effort</CheckBox>
                        </StackPanel>

                    </StackPanel>
                </Border>

控制4

 <StackPanel Name="stkPnlLogWindow" Grid.Column="0" Grid.Row="4">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                    <TextBlock Grid.Column="0" Grid.Row="0" Height="25" Background="Honeydew">Team Work Book</TextBlock>
                        <ListView Grid.Column="0" Grid.Row="1" Name="lstviewLogWindow" Height="75" >
                            <ListView.View >
                                <GridView >
                                    <GridViewColumn Header="Date/Time" Width="200" DisplayMemberBinding="{Binding LogWBDateTime}" />
                                    <GridViewColumn Header="Log Details" Width="850" DisplayMemberBinding="{Binding LogWBDetails}" />
                                </GridView>
                            </ListView.View>
                        </ListView>
                    </Grid>
                </StackPanel> </Grid>

答案 1 :(得分:0)

  private void btnwriteData_Checked(object sender, RoutedEventArgs e)
    {
        UpdateReadDataControlVisibility(
                      (bool)btnReadData.IsChecked ? Visibility.Visible : Visibility.Hidden);

        UpdateWriteDataControlVisibility(
            (bool)btnReadData.IsChecked ? Visibility.Hidden : Visibility.Visible);
        lblUploadData.Content = " Upload to:";

        DisableDestinationGridVisibility(
            (bool)btnwriteData.IsChecked ? Visibility.Hidden : Visibility.Visible);


        DisableTeamWBCheckBoxOptions(
         (bool)btnwriteData.IsChecked ? Visibility.Hidden : Visibility.Visible);

        ResizeGridLogWindow(
            (bool)btnwriteData.IsChecked ? lstviewLogWindow.Height = 150 : lstviewLogWindow.Height = 75,


            (bool)btnwriteData.IsChecked ? stkPnlLogWindow.Height = 175 : stkPnlLogWindow.Height = 100);

        btnUpload.Visibility = Visibility.Visible;

        ResizeLaunchInformationWindow(
           (bool)btnwriteData.IsChecked ? tbCtrlLaunchInfo.Height = 295 : tbCtrlLaunchInfo.Height = 220,
           (bool)btnwriteData.IsChecked ? lstviewOfOwners.Height = 275 : lstviewOfOwners.Height = 200,
          (bool)btnwriteData.IsChecked ? grdLaunchDetails.Height = 275 : grdLaunchDetails.Height = 200
           );}

叫做func的

  private void UpdateWriteDataControlVisibility(Visibility visibility)
    {
        // grdBrowse.Visibility = visibility;
        grpBxBrowseData.Visibility = visibility;
        //btnBrowseButton.Visibility = visibility;
        //txtBxBrowseTB.Visibility = visibility;
        //label1.Visibility = visibility;
        //grpBrowseData.Visibility = visibility;
    }

    private void UpdateReadDataControlVisibility(Visibility visibility)
    {
        grpBxSelectProject.Visibility = visibility;
        // grdSelectProject.Visibility = visibility;
        //label2.Visibility = visibility;
        //comboBoxProject.Visibility = visibility;
        //grpBxLogWindow.Height = 240;
        //grdLogWindow.Height = 230;
    }

    private void DisableDestinationGridVisibility(Visibility visibility)
    {
        stkPnlUpload.Visibility = visibility;
    }

    private void DisableTeamWBCheckBoxOptions(Visibility visibility)
    {
        brdrTWB.Visibility = visibility;
        //brdrTWB.Visibility = visibility;
        //txtBlkTWB.Visibility = visibility;
        //stkPnlTWB.Visibility = visibility;
      //stkpnlFirstRow.Visibility = visibility;
    }

    private void ResizeGridLogWindow(double lstViewHeight, double stkPnlHeight )
    {
        lstviewLogWindow.Height = lstViewHeight;
        stkPnlLogWindow.Height = stkPnlHeight;

    }

    private void ResizeLaunchInformationWindow(double tabHeight, double lstViewHeight, double grdHeight)
    {
        tbCtrlLaunchInfo.Height = tabHeight;
        lstviewOfOwners.Height = lstViewHeight;
        grdLaunchDetails.Height = grdHeight;
    }

** EOM **

由于 RAMM