代码之家  ›  专栏  ›  技术社区  ›  Mansa

datatemplate的Xamarin数据绑定问题[重复]

  •  0
  • Mansa  · 技术社区  · 6 年前

    DLToolkit, flowlist 创建流列表。

    在使用之前,我已经在我的项目中使用了这个包 ,它完全起作用。 datatemplate

    我的问题是:如何在代码隐藏中创建带有数据绑定的数据模板?

    下面是一个例子,在 Xaml公司 :

    <flv:FlowListView x:Name="flvList" BackgroundColor="White" FlowColumnCount="3" FlowItemsSource="{Binding LstItemSource}" HasUnevenRows="True">
                <flv:FlowListView.FlowColumnTemplate>
                    <DataTemplate>
    
                        <StackLayout BackgroundColor="White" Padding="2" HorizontalOptions="FillAndExpand">
    
                            <Frame  Margin="20" Padding="0" HeightRequest="175" OutlineColor="Gray" BackgroundColor="White" CornerRadius="10" HasShadow="True" IsClippedToBounds="True">
                                <Frame.Content>
    
                                    <AbsoluteLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" >
                                        <Image Aspect="AspectFill" AbsoluteLayout.LayoutBounds="1,1,1,1" AbsoluteLayout.LayoutFlags="All"  Source="{Binding BgImage}" />
                                        <BoxView Color="Black" Opacity=".5"  AbsoluteLayout.LayoutBounds="1,1,1,1" AbsoluteLayout.LayoutFlags="All"/>
                                        <StackLayout Margin="20" VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand">
                                            <Label Text="{Binding SubTitle}"  FontSize="Medium" TextColor="#66FFFFFF"/>
                                            <Label Text="{ Binding Title}" FontSize="Large" TextColor="White" />
                                        </StackLayout>
                                    </AbsoluteLayout>
    
                                </Frame.Content>
                            </Frame>
    
                        </StackLayout>
    
                    </DataTemplate>
                </flv:FlowListView.FlowColumnTemplate>
            </flv:FlowListView>
    

    但是,在这个项目中,控件是生成的,因此没有 Xaml公司 这是我在“代码隐藏”中尝试的代码示例,但不起作用:

    #region Datatemplate
                var dataTemplate = new DataTemplate(() =>
                {
                    var StackLayout = new StackLayout { BackgroundColor = Color.Pink, Padding = 2, HorizontalOptions = LayoutOptions.FillAndExpand };
    
                    #region children/content for frame
                    AbsoluteLayout absoluteLayout = new AbsoluteLayout { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand };
    
    
                    #region content for AbsoluteLayout
                    var imgBg = new Image();
                    AbsoluteLayout.SetLayoutBounds(imgBg , new Rectangle(1, 1, 1, 1));
                    AbsoluteLayout.SetLayoutFlags(imgBg , AbsoluteLayoutFlags.All);
    
                    imgBg .SetBinding(Image.SourceProperty, "BgImage");
                    absoluteLayout.Children.Add(imgBg );
    
    
                    var overlayBox = new BoxView { Color = Color.Black, Opacity = 0.5 };
                    AbsoluteLayout.SetLayoutBounds(overlayBox, new Rectangle(1, 1, 1, 1));
                    AbsoluteLayout.SetLayoutFlags(overlayBox, AbsoluteLayoutFlags.All);
                    absoluteLayout.Children.Add(overlayBox);
    
    
                    #region InnerStackpanel
                    StackLayout innerStackVoorAbsoluteLayout = new StackLayout { Margin = new Thickness(20), VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand };
    
                    var lblTitel = new Label { FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)), TextColor = Color.White };
                    var lblSubTitel = new Label { FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)), TextColor = Color.White };
    
    
                    //Bindings 
                    lblTitel.SetBinding(Label.TextProperty, "Title");
                    lblSubTitel.SetBinding(Label.TextProperty, "SubTitle");
    
                    innerStackVoorAbsoluteLayout.Children.Add(lblSubTitel);
                    innerStackVoorAbsoluteLayout.Children.Add(lblTitel);
    
                    absoluteLayout.Children.Add(innerStackVoorAbsoluteLayout);
                    #endregion
    
                    #endregion
    
    
                    #endregion
    
                    Frame frame = new Frame();
                    frame.Content = absoluteLayout;
    
    
    
                    StackLayout.Children.Add(frame);
    
    
                    return StackLayout;
                });
    
                #endregion
    
    
                FlowListView lstRelatieLijst = new FlowListView();
                lstRelatieLijst.ItemsSource = lstRelatieItems;
                lstRelatieLijst.FlowColumnTemplate = dataTemplate;
                lstRelatieLijst.BackgroundColor = Color.LightGoldenrodYellow;
                lstRelatieLijst.FlowColumnCount = 1;
                lstRelatieLijst.HasUnevenRows = true;
    
    
                #endregion
    

    有没有人能给我一些建议,我怎样才能成为类似鞋面的东西 请输入密码?

    我已经尝试了以下来源,但不幸的是,我没有按预期工作。我希望看到相同的结果或类似的XAML代码。但是在跟踪他们的信息之后,FLowListView看起来是空的:

    https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/templates/data-templates/creating

    https://www.codeproject.com/Questions/516614/createplusdatatemplatepluscodeplusbehind

    0 回复  |  直到 7 年前