Xamarin表单:在listview中获取控件

Xamarin表单:在listview中获取控件,listview,gridview,xamarin,grid,xamarin.forms,Listview,Gridview,Xamarin,Grid,Xamarin.forms,如何获取此listview中的网格(x:Name=“grd_containerline”)。我一定能找到孩子们。 我试着用这个.FindByName(“grd_containerline”)来找到它,但不起作用 有人能帮我吗 <Frame Style="{StaticResource StandardFrameStyle}" HorizontalOptions="FillAndExpand" VerticalOptions="EndAndExpand" IsVisible="{Bindin

如何获取此listview中的网格(x:Name=“grd_containerline”)。我一定能找到孩子们。 我试着用这个.FindByName(“grd_containerline”)来找到它,但不起作用

有人能帮我吗

<Frame Style="{StaticResource StandardFrameStyle}" HorizontalOptions="FillAndExpand" VerticalOptions="EndAndExpand" IsVisible="{Binding IsContainerLineListViewVisible}">
      <StackLayout HorizontalOptions="CenterAndExpand" VerticalOptions="FillAndExpand">
        <ListView x:Name="lst_containerline" ItemSelected="OnItemSelected" ItemsSource="{Binding ContainerLineList}" HasUnevenRows="True" Style="{StaticResource StandardListViewStyle}">
          <ListView.ItemTemplate>
            <DataTemplate>
              <ViewCell>
                <ViewCell.View>
                  <Grid x:Name="grd_containerline">
                    <Grid.RowDefinitions>
                      <RowDefinition Height="Auto" />
                      <RowDefinition Height="Auto" />
                      <RowDefinition Height="Auto" />
                      <RowDefinition Height="Auto" />
                      <RowDefinition Height="Auto" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                      <ColumnDefinition Width="*" />
                      <ColumnDefinition Width="*" />
                      <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <Label x:Name="lbl_itemNo_binding_containerline" Text="{Binding ItemNo}" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" VerticalTextAlignment="Center" Style="{StaticResource StandardLabelStyle}" />

                    <Label x:Name="lbl_description_binding_containerline" Text="{Binding Description}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" VerticalTextAlignment="Center" Style="{StaticResource StandardLabelStyle}" />

                    <Label x:Name="lbl_lotNo_binding_containerline" Text="{Binding LotNo}" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" VerticalTextAlignment="Center" Style="{StaticResource StandardLabelStyle}" />

                    <Label x:Name="lbl_quantity_binding_containerline" Text="{Binding Quantity}" Grid.Row="3" Grid.Column="0" VerticalTextAlignment="Center" Style="{StaticResource StandardLabelStyle}" />
                    <Label x:Name="lbl_unitofMeasureCode_binding_containerline" Text="{Binding UnitofMeasureCode}" Grid.Row="3" Grid.Column="1" VerticalTextAlignment="Center" Style="{StaticResource StandardLabelStyle}" />
                    <Label x:Name="lbl_kgQuantity_binding_containerline" Text="{Binding KgQuantity}" Grid.Row="3" Grid.Column="2" VerticalTextAlignment="Center" Style="{StaticResource StandardLabelStyle}" />

                    <Label x:Name="lbl_binCode_binding_containerline" Text="{Binding BinCode}" Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" VerticalTextAlignment="Center" Style="{StaticResource StandardLabelStyle}" />
                  </Grid>
                </ViewCell.View>
              </ViewCell>
            </DataTemplate>
          </ListView.ItemTemplate>
        </ListView>
      </StackLayout>
    </Frame>

通常,您无法按名称访问项目模板内的任何控件。 如果您试图在代码隐藏中访问此控件,给ItemTemplate中的任何控件一个x:Name将导致编译器错误,而不是在XAML中分配单击处理程序(或使用命令)。您可以尝试此操作

Xmal页


代码端:

Task.Run(()=>BuildSegmentCards());
私人信用卡()
{
var rowDef=new RowDefinition{Height=150};
var frames=新集合();
对于(变量i=0;i<_viewModel.Segments.Count;i++)
{
var列=i%2;
var行=i/2;
添加(新元组(BuildGridElement(_viewModel.Segments[i]),列,行);
}
//这必须在UI线程上运行,以防止UI锁定。
Device.beginInvokeMainThread(()=>
{
SegmentGrid.RowDefinitions.Clear();
SegmentGrid.Children.Clear();
SegmentGrid.HeightRequest=470;
foreach(帧中的变量帧)
{
如果(frame.Item3%2!=0)
{
SegmentGrid.RowDefinitions.Add(rowDef);
}
SegmentGrid.Children.Add(frame.Item1、frame.Item2、frame.Item3);
}
});
}
私有静态框架BuildGridElement(SegmentViewModel值)
{
var numberLabel=新标签{Text=value.Number.ToString(),BackgroundColor=Color.White,TextColor=Color.Aqua.withluminity(0.3f)};
var titleLable=新标签{Text=value.Title,BackgroundColor=Color.White,TextColor=Color.Black};
var innerLayout=新的RelativeLayout();
innerLayout.Children.Add(numberLabel,Constraint.Constant(0));
innerLayout.Children.Add(可标题,约束,相对视图(numberLabel,(p,s)=>numberLabel.Width+3));
var palleteFrame=新帧
{
背景颜色=颜色。白色,
填充=12,
内容=内部布局,
Hassadow=假,
VerticalOptions=LayoutOptions.FillAndExpand
};
添加(新的TapGestureRecognizer((回调)=>NavigateToSegment(值));
返回托盘框架;
}
您所说的“如何在listview中获取网格”到底是什么意思?我很困惑。而且,在使用上我使用了。我的意思是我遵循我的网格模式。。。我想要自定义“grd_容器行”,所以我必须将网格放入网格变量中?