在TabControl Dynamic中制作网格的宽度和高度

时间:2014-11-11 13:22:41

标签: c# wpf xaml grid tabcontrol

我正在研究WPF应用程序。我的应用中有很多标签。每个选项卡都包含一个grid.My应用程序是基于页面的,没有窗口。我的应用程序中有两个页面,一个是Xaml的主页面 MainPage.xaml中

<Page x:Class="App.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  mc:Ignorable="d" 
  d:DesignHeight="300" d:DesignWidth="300"
Title="MainPage" Height="600" Width="1000" WindowHeight="600" 
  WindowWidth="1000" WindowTitle="CSP - LOGIN" Background="Black"></Page>

和Page2.xaml

<Page x:Class="App.Page2"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
          xmlns:d="http://schemas.microsoft.com/expression/blend/2008">
<Grid Background="Black">
    <TabControl HorizontalAlignment="Left" Height="100" Margin="27,63,0,0" VerticalAlignment="Top" Width="100">
                <TabItem Header="TabItem">
                    <Grid Background="#FFE5E5E5">
<Grid HorizontalAlignment="Left" Height="410.5" Margin="10,19.54,0,0" VerticalAlignment="Top" Width="766">
<Button Content="Add Item" HorizontalAlignment="Left" Margin="10,135.748,0,0" VerticalAlignment="Top" Width="75"/>
                        <Button Content="Remove Item" HorizontalAlignment="Left" Margin="10,177.208,0,0" VerticalAlignment="Top" Width="75"/>
                        <Button Content="Update Item" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="10,217.168,0,0"/>
</Grid>
</Grid>
                </TabItem>
                <TabItem Header="TabItem">
                    <Grid Background="#FFE5E5E5">
<Grid HorizontalAlignment="Left" Height="410.5" Margin="10,19.54,0,0" VerticalAlignment="Top" Width="766">
<Button Content="Add Item" HorizontalAlignment="Left" Margin="10,135.748,0,0" VerticalAlignment="Top" Width="75"/>
                        <Button Content="Remove Item" HorizontalAlignment="Left" Margin="10,177.208,0,0" VerticalAlignment="Top" Width="75"/>
                        <Button Content="Update Item" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="10,217.168,0,0"/>
</Grid>
</Grid>
                </TabItem>
                <TabItem Header="TabItem" HorizontalAlignment="Left" Height="19.96" VerticalAlignment="Top" Width="96">
                    <Grid Background="#FFE5E5E5">
<Grid HorizontalAlignment="Left" Height="410.5" Margin="10,19.54,0,0" VerticalAlignment="Top" Width="766">
<Button Content="Add Item" HorizontalAlignment="Left" Margin="10,135.748,0,0" VerticalAlignment="Top" Width="75"/>
                        <Button Content="Remove Item" HorizontalAlignment="Left" Margin="10,177.208,0,0" VerticalAlignment="Top" Width="75"/>
                        <Button Content="Update Item" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="10,217.168,0,0"/>
</Grid>
</Grid>
                </TabItem>
            </TabControl>
</Grid>

    </Page>

如您所见,每个标签各有两个网格。默认情况下生成一个网格,我添加其他网格以将项目组合在一起。

我尝试使用SizeToContent和其他函数在更改时动态获取宽度和高度,但是当我添加SizeToContent时,它会给出错误并且SizeToContent不会在代码提示中显示。它给出了无法访问的错误。

我希望网格中的内容是动态的,所以如果改变窗口大小,那么大小也会改变。

1 个答案:

答案 0 :(得分:0)

我将解释控制属性的一些行为方面:

  • 在控件上定义Width属性会导致它水平修复。
  • 在控件上定义Height属性会使其垂直固定。
  • 在控件上定义HorizontalAlignment属性具有各种行为,具体取决于值:
    1. Stretch默认值。使控件相对于其父容器水平拉伸。 如果已设置Width属性,则此选项无效。
    2. Left:将控件向左对齐其父容器。
    3. Center:将控件水平居中于其父容器中。
    4. Right:将控件在其父容器中向右对齐。
  • 在控件上定义VerticalAlignment属性有各种行为,取决于值:
    1. Stretch默认值。使控件相对于其父容器垂直拉伸。 如果已设置Height属性,则此选项无效。
    2. Top:将控件对齐其父容器中的顶部。
    3. Center:将控件垂直居中于其父容器中。
    4. Bottom:将控件对齐其父容器中的底部。
  • 在控件上定义Margin属性将根据父容器的类型进行相对定位,这在本文中无法解释。

我不清楚您希望如何定位控件,但要回答您的问题:您可以删除WidthHeightHorizontalAlignment和{{1控件允许它在窗口中水平和垂直拉伸。例如:

VerticalAlignment

只要玩这些属性,你就可以尽快掌握它。