【问题标题】:Adjusting WPF Layout Controls调整 WPF 布局控件
【发布时间】:2009-07-30 08:00:53
【问题描述】:

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

4 个控件是:1. 带有列表视图的 Tabcontrol 2. 带有复选框的堆栈面板 3. 带有文本框和浏览按钮的堆栈面板(方向 - 水平) 4. 带有文本块和列表视图的堆栈面板。

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

对于写入按钮,控件 2 和 3 应不可见,控件 1 和 4 应填充区域。

ctrl ht
1 150
2 100 3 30
4 200

当我按下 write 时,ctrl 2 n 3 会变得不可见,并且 ctrl 1 的高度应该是 (150 + 75) 而 ctrl 4 应该是 (200 + 55).. 这使得 ctrl1 下限应该向下移动到 75 像素,而 ctrl 4 上限应该是 55 像素以上..

请帮我做这件事.. 我正在为这个 WPF 应用程序使用 XAML 和 C#

谢谢 撞锤

【问题讨论】:

  • 尝试绘制并添加您想要的图像,很难理解您的问题
  • 同意,您需要在此处向我们提供更多详细信息。从给我们 XAML 开始,也许人们可以从那里提供帮助。

标签: wpf layout


【解决方案1】:

即使我觉得我的解释令人困惑。我将提供 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>

【讨论】:

  • 我正在将后面的代码添加到这个..以供参考请帮助我。是不是手动设置窗口的高度是个坏主意>?在我后面的代码中,我手动设置了 height 属性。只有触发事件才能处理这种格式??
【解决方案2】:
  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
           );}

调用函数的

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

谢谢 撞锤

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多