0

我在使用绑定属性的自定义控件上遇到问题。它曾经在 pcl 项目时工作。使用最新的 xamarin 表单包将代码拉出到 .net 标准 2.0 后,它无法正常工作。

这是我的设置

public static readonly BindableProperty ChildProperty = BindableProperty.Create(nameof(Child), typeof(ChildModel), typeof(ChildModel), null, BindingMode.OneWay, propertyChanging: (BindableObject bindable, object oldValue, object newValue) => {

        var a = newValue;
    });

并且财产是

public ChildModel Child 
    {
        get
        { 
            return (ChildModel)GetValue(ChildProperty);
        }
        set
        {
            SetValue(ChildProperty, value);
        }
    }

我可以看到 newValue 确实在回调中传递了 childModel 数据。第二组代码的 GetValue 总是返回 null。

        <ListView 
            Style="{StaticResource listStyle}"
            AutomationId="listChildren"
            CachingStrategy="RecycleElement"
            x:Name="childListView"   
            ItemSelected="OnItemSelected"
            ItemTapped="OnItemTapped">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <ViewCell.View>
                            <Frame HasShadow="false" Padding="{StaticResource cellPadding}">
                                <local:ExtendedFrame Style="{StaticResource cardStyle}">
                                    <Grid>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="*"></RowDefinition>
                                        </Grid.RowDefinitions>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="{StaticResource profileGridSize}"></ColumnDefinition>
                                            <ColumnDefinition>*</ColumnDefinition>
                                        </Grid.ColumnDefinitions>

                                        <controls:CircleImage 
                                            Grid.Row="0"
                                            Grid.Column="0"
                                            Style="{StaticResource profileImageStyle}" 
                                            Source="{Binding Source}" 
                                            VerticalOptions="Center"
                                            HorizontalOptions="Center"> 
                                        </controls:CircleImage>

                                        <StackLayout Orientation="Vertical" 
                                           Grid.Row="0" 
                                           Grid.Column="1"
                                            VerticalOptions="Center"
                                            HorizontalOptions="Start">                              
                                            <Label AutomationId="aChildName" Style="{StaticResource MediumBoldFont}" x:Name="childName" Text="{Binding DisplayName}" HorizontalOptions="StartAndExpand" />
                                            <local:ChildInfoIconsView 
                                                Child="{Binding .}"
                                                VerticalOptions="Fill">
                                            </local:ChildInfoIconsView> 
                                        </StackLayout>
                                    </Grid>
                                </local:ExtendedFrame>
                            </Frame>    
                        </ViewCell.View>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
4

0 回答 0