WPF标记,限制DockPanel子的高度

时间:2014-04-04 16:53:25

标签: c# wpf xaml dockpanel

我对WPF很新,而且我对绑定感觉非常好,但我对标记感觉不太舒服。我使用Grid和DockPanel很多,并且可能不是以最有效的方式。我只是插手,直到我得到看起来大致正确的东西。

关于下面的代码,我所看到的是图像占据了所需的空间(均匀增长)。在图像达到最大尺寸后,如果需要,ItemList将增长以填充剩余空间,然后按钮。我想改变它,以便可以从视图框中删除按钮,图像只会增长,直到它进入按钮使用的空间。

<DockPanel LastChildFill="False" >
    <Grid DockPanel.Dock="Bottom" x:Name="Images">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <DockPanel Grid.Column="0">
            <TextBlock DockPanel.Dock="Bottom" />
            <Button HorizontalAlignment="Center" VerticalAlignment="Bottom">
                <Image Stretch="Uniform" />
            </Button>
        </DockPanel>
        <DockPanel Grid.Column="1">
            <TextBlock DockPanel.Dock="Bottom" />
            <Button HorizontalAlignment="Center" VerticalAlignment="Bottom">
                <Image Stretch="Uniform" />
            </Button>
        </DockPanel>
    </Grid>
    <GroupBox DockPanel.Dock="Right" VerticalAlignment="Top" x:Name="ItemList">
        <ListView>
            <ListView.View>
                <GridView>
                    <GridViewColumn />
                </GridView>
            </ListView.View>
        </ListView>
    </GroupBox>
    <Viewbox DockPanel.Dock="Right" StretchDirection="DownOnly" VerticalAlignment="Top">
        <StackPanel Width="180" x:Names="Buttons">
            <Button Height="105" />
            <Button Height="105" />
        </StackPanel>
    </Viewbox>
</DockPanel>

如图所示,理想情况下,我希望图像(I)包含两个相同大小的按钮,彼此相邻。这些按钮的背景是图像。这些按钮应尽可能大,但不应妨碍按钮(B)占用的空间,也不要超出可用于均匀拉伸的空间。 ItemList(IL)应该从均匀拉伸中留下任何剩余的空间(如果有的话)。

            _____________
           |      |      |
           |      |      |
           |  B   |      |
           |      |  IL  |
           |______|      |
                  |      |
 _________________|______|
|                        |
|                        |
|            I           |
|                        |
|________________________|

谢谢 - 德里克

1 个答案:

答案 0 :(得分:0)

我希望此代码能为您提供帮助:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <DockPanel LastChildFill="False">
        <GroupBox DockPanel.Dock="Right" x:Name="ItemList">
            <DataGrid>
                <DataGrid.Columns>
                    <DataGridTextColumn />
                </DataGrid.Columns>
            </DataGrid>
        </GroupBox>
        <StackPanel DockPanel.Dock="Right" Width="180" x:Name="Buttons">
            <Button Height="105" />
            <Button Height="105" />
        </StackPanel>
    </DockPanel>
    <Grid x:Name="Images" Grid.Row="1" Style="{StaticResource HideImages}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <DockPanel Grid.Column="0">
            <TextBlock DockPanel.Dock="Bottom" />
            <Button HorizontalAlignment="Center" VerticalAlignment="Bottom">
                <Image Stretch="Uniform" />
            </Button>
        </DockPanel>
        <DockPanel Grid.Column="1">
            <TextBlock DockPanel.Dock="Bottom" />
            <Button HorizontalAlignment="Center" VerticalAlignment="Bottom">
                <Image Stretch="Uniform" />
            </Button>
        </DockPanel>
    </Grid>
</Grid>