我的目标是以编程方式设置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应该在哪一行/列,然后跨越它,但遗憾的是我不知道如何。
答案 0 :(得分:1)
您可以使用以下方法设置Grid.Column
的{{1}},Grid.Row
和Grid.RowSpan
附加属性:
myDockPanel