我无法访问X:XAML中ListView中控件的名称以及后面的代码

时间:2019-03-28 22:10:08

标签: c# xamarin.forms xamarin.forms.listview

我有Xamarin形式的ListView,其中有一个自定义单元格。自定义单元格包含具有x:Name属性的Image控件。现在,我尝试将活动指示器IsRunning属性绑定到Image IsLoading属性,并且Xamarin表单使用x:Name找不到图像。我也尝试过从后端访问。

我在Listview中添加了其他元素,并且它们的x:Name也不可见。

注意:我可以访问x:我在ListView外部放置的控件名称,因此它看起来像是listview问题。

<StackLayout>
    <ActivityIndicator x:Name="activity" Color="Purple" HeightRequest="50" WidthRequest="50" IsRunning="{Binding Source={x:Reference Offerimg},Path=IsLoading}"></ActivityIndicator>


    <ListView x:Name="OfferLV" HasUnevenRows="True" x:FieldModifier="Public" SeparatorVisibility="None" BackgroundColor="White">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell >
                    <StackLayout Padding="0,10,0,10">
                        <Image  x:Name="offerimg" HeightRequest="500" WidthRequest="100" Aspect="AspectFill"></Image>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackLayout>

2 个答案:

答案 0 :(得分:1)

有一个非常不错的库FFImageLoading,它将帮助您完成所需的工作,并且具有内置的2019-04-01 12:30:52.920UTC DEBUG[Analyzer-akka.actor.default-dispatcher-29] a.k.i.DefaultProducerStage DefaultProducerStage(akka://Analyzer) - Stage completed 2019-04-01 12:30:52.920UTC DEBUG[Analyzer-akka.actor.default-dispatcher-29] a.k.i.DefaultProducerStage DefaultProducerStage(akka://Analyzer) - Producer closed 2019-04-01 12:30:52.934UTC DEBUG[Analyzer-akka.actor.default-dispatcher-29] a.s.i.ActorRefSourceActor akka://Analyzer/system/StreamSupervisor-0/flow-0-2-actorRefSource - stopped 2019-04-01 12:30:53.090UTC INFO [Analyzer-akka.actor.default-dispatcher-24] a.a.RepointableActorRef akka://Analyzer/system/StreamSupervisor-0/flow-0-2-actorRefSource - Message [Evaluation] from Actor[akka://RTCPAnalyzer/system/sharding/nl.phact.rtcp.actors.AnalyzerActor/38/1683109215-939#1340984343] to Actor[akka://Analyzer/system/StreamSupervisor-0/flow-0-2-actorRefSource#-195168168] was not delivered. [3] dead letters encountered. If this is not an expected behavior, then [Actor[akka://Analyzer/system/StreamSupervisor-0/flow-0-2-actorRefSource#-195168168]] may have terminated unexpectedly, This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. 属性,可以相应显示IsLoading。您还可以处理加载错误等等...

ActivityIndicator

我为此示例创建了一个示例:https://github.com/vincentcastagna/ImageLoadingPlaceHolder

答案 1 :(得分:0)

这就是在XAML技术(包括Xamarin.Forms)中可以预期的工作方式。

不仅有一个ViewCell,而且可能有成千上万个,并且您不能使用一个名称访问成千上万个不同的项目。

推荐的方式是使用数据绑定。通常,您还可以通过在事件中投放sender来访问这些项目。