边框背景图像不会跨越整个边框

时间:2012-02-17 16:26:01

标签: wpf user-controls background-image

我正在编写WPF应用程序。在应用程序中,我有一个有两列的网格。一列有一个边框标记,当应用程序运行时,它会跨越主窗口的高度而没有任何问题。

我遇到的问题是我希望背景图像也跨越应用程序的高度并包含在边框内。但是,当我运行应用程序时,它只占用足够的空间来为页面上存在的控件提供背景。这意味着超过一半的网格列保持白色。我试过拉伸图像(将拉伸设置为填充),我知道图像足够大。

请问,我怎样才能实现我的目标?

以下是重要的XAML:

<Border>
        <Border.Background>
            <ImageBrush ImageSource="../Assets/control bg.png" Stretch="Fill" />
        </Border.Background>
        <Grid Margin="10,10,10,0">
            <Grid.Background>
                <ImageBrush />
            </Grid.Background>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Border BorderBrush="Black" BorderThickness="1">
                <TextBlock TextWrapping="Wrap" Text="Owner Information" Margin="5,0,0,0" FontSize="21.333" Foreground="#FF2B2B2B" FontFamily="Verdana"/>
            </Border>
            <Grid Margin="10,10,5,5" Grid.Row="1">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>
                          </Grid>

网格确实包含一些我遗漏的控件。它们只是文本框和组合。

1 个答案:

答案 0 :(得分:0)

Snowbear是对的,你的XAML会非常有帮助,但这里有一些事情要开始:

默认情况下,Grid中的行和列占用的空间最少,以容纳给定行或列中包含的任何单元格中的最大内容。例如,如果一列中有一个单元格,其中包含一个长字,如“hippopotamus”,但列中的所有其他单元格都有较小的单词,如“dog”,则列的宽度将是最大单词的宽度(河马)。 “http://msdn.microsoft.com/en-us/library/system.windows.controls.grid.aspx

因此,如果您的边框没有指定明确的高度和宽度,那么它将存在于您在列中提供的内容周围。绑定到设定值也可以。

<Grid Height="50" Width="50">