以编程方式在网格中设置 Dockpanel 大小
Set Dockpanel size in grid programmatically
我的目标是以编程方式设置 DockPanel 大小。
我希望它跨越 Grid.Column=1、Grid.Row=1、Grid.RowSpan=5
而且我知道在 xaml 中静态设置它很热,但在 c# 中不行。
代码说明: 在 xaml 中,我制作了一个 1 行 1 列的网格,其中包含一些文本字段和 DockPanel 中的一个按钮。当我按下按钮时,它应该创建一个网格,其中的 column/rows 与我在文本字段中所写的一样多。然后命名每一列和每一行。并且知道我想在其中一些字段上创建一个 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.
最后,我希望能够设置 row/column 停靠面板应该在哪个位置,然后跨越它,但遗憾的是我不知道该怎么做。
您可以使用以下方法设置 myDockPanel
的 Grid.Column
、Grid.Row
和 Grid.RowSpan
附加属性:
Grid.SetColumn(myDockPanel, 1); //= <DockPanel ... Grid.Column = "1"
Grid.SetRow(myDockPanel, 1); //= <DockPanel ... Grid.Row = "1"
Grid.SetRowSpan(myDockPanel, 8); //= <DockPanel ... Grid.RowSpan = "8"
我的目标是以编程方式设置 DockPanel 大小。 我希望它跨越 Grid.Column=1、Grid.Row=1、Grid.RowSpan=5
而且我知道在 xaml 中静态设置它很热,但在 c# 中不行。
代码说明: 在 xaml 中,我制作了一个 1 行 1 列的网格,其中包含一些文本字段和 DockPanel 中的一个按钮。当我按下按钮时,它应该创建一个网格,其中的 column/rows 与我在文本字段中所写的一样多。然后命名每一列和每一行。并且知道我想在其中一些字段上创建一个 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.
最后,我希望能够设置 row/column 停靠面板应该在哪个位置,然后跨越它,但遗憾的是我不知道该怎么做。
您可以使用以下方法设置 myDockPanel
的 Grid.Column
、Grid.Row
和 Grid.RowSpan
附加属性:
Grid.SetColumn(myDockPanel, 1); //= <DockPanel ... Grid.Column = "1"
Grid.SetRow(myDockPanel, 1); //= <DockPanel ... Grid.Row = "1"
Grid.SetRowSpan(myDockPanel, 8); //= <DockPanel ... Grid.RowSpan = "8"