使用LINQ

时间:2015-08-05 19:02:00

标签: c# linq xaml

我在XAML网格中动态生成行:

        for (int i = 0; i < AssociatedSteps.Length; i++)
        {
            //if (i == 0 || AssociatedSteps[i].OriginPkg != AssociatedSteps[i-1].OriginPkg)
            //{
            //Define new Row to add
            RowDef = new RowDefinition();
            RowDef.Height = new GridLength(60);

            //Add row definition to Grid
            WorkPackageViewResults.RowDefinitions.Add(RowDef);

            //Define the control that will be added to new row
            Text1 = new TextBlock();
            Text1.Text = AssociatedSteps[i].SF01;
            Text1.Width = Settings.workPackageColumn5Width;
            Text1.TextAlignment = TextAlignment.Center;

            Text2 = new TextBlock();
            Text2.Text = AssociatedSteps[i].SF10;
            Text2.Width = Settings.workPackageColumn5Width;
            Text2.TextAlignment = TextAlignment.Center;

            Text3 = new TextBlock();
            Text3.Text = AssociatedSteps[i].OriginPkg;
            Text3.Width = Settings.workPackageColumn5Width;
            Text3.TextAlignment = TextAlignment.Center;

            Button1 = new Button();
            Button1.Content = AssociatedSteps[i].Description;
            Button1.Width = Settings.workPackageColumn5Width;
            Button1.Click += new RoutedEventHandler(ProgressUpdateButton_Click);
            Button1.Tag = AssociatedSteps[i].StepID;

            //create stackpanel and define which row to add the stackpanel to
            StackP = new StackPanel();
            //StackP.Background = new SolidColorBrush(Colors.Wheat);
            StackP.SetValue(Grid.RowProperty, i);
            StackP.Orientation = Orientation.Horizontal;
            StackP.Margin = new Thickness(0, 0, 0, 0);

            PercentComplete = new TextBlock();
            PercentComplete.Text = (Convert.ToDouble(AssociatedSteps[i].ToDateQty) / Convert.ToDouble(AssociatedSteps[i].MTOQty)).ToString();
            PercentComplete.Width = Settings.workPackageColumn5Width;
            PercentComplete.TextAlignment = TextAlignment.Center;

            //add your control to the stackpanel
            StackP.Children.Add(Text1);
            StackP.Children.Add(Text2);
            StackP.Children.Add(Text3);
            StackP.Children.Add(Button1);
            StackP.Children.Add(PercentComplete);
            //add the stackpanel to the grid
            WorkPackageViewResults.Children.Add(StackP);
        }

我正在尝试使用LINQ来访问上面以编程方式更新的网格:

<Grid Name="WorkPackageViewResults">
    </Grid>

enter image description here

我没有看到他们为单元格提供的选项类型。我想访问特定行PercentComplete TextBlock,以便我可以更新文本。我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

由于只有一个StackPanel,您可以说e => e.GetType() == typeof(StackPanel)。如果您有很多,那么将一个Name添加到StackPanel并将其拉出来。