我想显示一个图像网格。最初网格将是空的,然后当图像从外部设备到达时它将逐渐填充,可能是随机顺序,即,我可以获得位置(1,3)然后(5,5)等的图像。
尺寸将在运行时知道,但在我显示网格之前,所以我必须以编程方式设置它们,而不是在XAML中。
1。我在网上找到的示例显示了如何在XAML中定义网格行和列,但是如何在C#中以编程方式执行,即,如果指定了5x4网格我希望用户最初看到一个空的5x4网格。
2. 如何以编程方式访问/更改各个网格位置的元素?当网格为空时,我想首先在每个空白点(如“X”或彩色矩形)中显示某些内容,然后在实际图像到达时将其替换。在C#中,如何访问网格位置(x,y)以添加或更改其中的内容?
3 网格是否具有任何内在的滚动功能,或者我必须将它们包装在单独的滚动控件中,即
<ScrollViewer>
<Grid>
</Grid>
</ScrollViewer>
...如果我这样做,我可以将其设置为滚动条,只有在需要时才会显示?
答案 0 :(得分:2)
很简单,请参阅msdn
// Create the Grid
Grid myGrid = new Grid();
myGrid.Width = 250;
myGrid.Height = 100;
myGrid.HorizontalAlignment = HorizontalAlignment.Left;
myGrid.VerticalAlignment = VerticalAlignment.Top;
myGrid.ShowGridLines = true;
// Define the Columns
ColumnDefinition colDef1 = new ColumnDefinition();
ColumnDefinition colDef2 = new ColumnDefinition();
ColumnDefinition colDef3 = new ColumnDefinition();
myGrid.ColumnDefinitions.Add(colDef1);
myGrid.ColumnDefinitions.Add(colDef2);
myGrid.ColumnDefinitions.Add(colDef3);
// Define the Rows
RowDefinition rowDef1 = new RowDefinition();
RowDefinition rowDef2 = new RowDefinition();
RowDefinition rowDef3 = new RowDefinition();
RowDefinition rowDef4 = new RowDefinition();
myGrid.RowDefinitions.Add(rowDef1);
myGrid.RowDefinitions.Add(rowDef2);
myGrid.RowDefinitions.Add(rowDef3);
myGrid.RowDefinitions.Add(rowDef4);
// Add the first text cell to the Grid
TextBlock txt1 = new TextBlock();
txt1.Text = "2005 Products Shipped";
txt1.FontSize = 20;
txt1.FontWeight = FontWeights.Bold;
Grid.SetColumnSpan(txt1, 3);
Grid.SetRow(txt1, 0);
...
myGrid.Children.Add(txt1);
mainWindow.Content = myGrid
我可能会在您的案例中使用ListBox
WrapPanel
。您将获得选择(多项选择?)和滚动作为奖励。搜索“wpf listbox wrappanel”,例如,here就是其中之一。