C#WPF始终将控件相对于窗口背景图像对齐

时间:2018-06-25 11:49:41

标签: c# wpf xaml


我有一个使用背景图像的WPF应用程序。

 <Window.Background>
    <ImageBrush ImageSource="Images/background.png"/>
</Window.Background>

在窗口中,我具有网格和列的定义。

<Grid ShowGridLines="False">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
</Grid.RowDefinitions>

每次更改窗口大小时,都会调整背景图像的大小,这没关系。
问题在于表格中的控件失去了位置。
背景看起来是这样的:
Background image

我需要在两行之间添加文本框,使其看起来像这样:
Desired solution

到目前为止,我尝试使用canvas,dockpanel,将文本框置于不同的用户控件中,但没有任何帮助。
控件没有行距和列宽只有边距/宽度或高度。

任何想法都会有所帮助:)谢谢!

1 个答案:

答案 0 :(得分:1)

您的文本框需要相对于窗口大小进行调整。通过用星号(*)指定大小,可以将列宽度和行高定义为宽度和高度的分数。 有关起点,请参见下面的示例。您当然可以稍微调整一下数字。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.2*"/>
        <ColumnDefinition Width="0.29*"/>
        <ColumnDefinition Width="0.02*"/>
        <ColumnDefinition Width="0.29*"/>
        <ColumnDefinition Width="0.2*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="0.55*"/>
        <RowDefinition Height="0.1*"/>
        <RowDefinition Height="0.1*"/>
        <RowDefinition Height="0.1*"/>
        <RowDefinition Height="0.1*"/>

    </Grid.RowDefinitions>
    <TextBox Grid.Row="1" Grid.Column="1"/>
    <TextBox Grid.Row="1" Grid.Column="3"/>
    <TextBox Grid.Row="3" Grid.Column="1"/>
    <TextBox Grid.Row="3" Grid.Column="3"/>
</Grid>