以编程方式在网格中设置Dockpanel大小

时间:2018-02-27 12:40:06

标签: c# wpf xaml dockpanel

我的目标是以编程方式设置DockPanel大小。 我希望它跨越Grid.Column = 1,Grid.Row = 1,Grid.RowSpan = 5

我知道在xaml中静态设置它,但不是在c#中。

代码说明:在xaml中,我创建了一个1row 1列网格,其中包含一些文本字段和DockPanel中的按钮。当我按下按钮时,它应该创建一个网格,其中包含我在文本字段中编写的列数/行数。然后命名每列和每行。并且我知道我想在其中一些领域创建一个Dockpanel,但为此我必须定义它的起始位置和跨度。这就是问题所在。

这是我的xaml代码我是如何做到的:

<Grid Name="MainWindowGrid">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Name="DockPanel"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <DockPanel Background="LightSalmon" Grid.Row="0" Grid.Column="0" Grid.RowSpan="8">
        <StackPanel>
            <TextBox Name="txtColums" Text="16"/>
            <TextBox Name="txtRows" Text="8"/>
            <TextBox Name="txtWindowHeight" Text="800"/>
            <TextBox Name="txtWindowWidth" Text="1600"/>

            <Button x:Name="ButtonCreate" Content="Create" Click="ButtonCreate_Click"/>
        </StackPanel>
    </DockPanel>
    <ContentControl Content="{Binding}"/>
</Grid>

我的C#代码到目前为止:

Methods Methods = new Methods();
Methods.CreateField(MainWindowGrid, txtColums, txtRows, txtWindowHeight, txtWindowWidth, MainWindow1);

int GridColumnCount = MainWindowGrid.ColumnDefinitions.Count;
int GridRowCount = MainWindowGrid.RowDefinitions.Count;

for (int a = 1; a < GridColumnCount; a++)
{
    MainWindowGrid.ColumnDefinitions.ElementAt(a).Name = "C" + a;
}
for (int a = 1; a < GridRowCount; a++)
{
    MainWindowGrid.RowDefinitions.ElementAt(a).Name = "R" + a;
}

var converter = new System.Windows.Media.BrushConverter();
var brush1 = (Brush)converter.ConvertFromString("#FFFFFFF0");
DockPanel myDockPanel = new DockPanel();
myDockPanel.Background = brush1;
myDockPanel.

最后,我希望能够设置dockpanel应该在哪一行/列,然后跨越它,但遗憾的是我不知道如何。

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法设置Grid.Column的{​​{1}},Grid.RowGrid.RowSpan附加属性:

myDockPanel