Xamarin表单中的可观察集合更新时,视图未更新

如何解决Xamarin表单中的可观察集合更新时,视图未更新

一旦从Pop Up添加了新项目,我正在尝试通过RG Pop插件更新我的视图。尽管我在添加新项目时可以看到Observable Collection中的更改,但是根据Observable Collection,视图并没有得到更新。

这是我的视图模型,

public class ReceiptViewModel : AddRecieptModel
    {
        //public ObservableCollection<AddRecieptModel> RecieptsData { get; set; }

        private ObservableCollection<AddRecieptModel> _addRecieptModel;
        public ObservableCollection<AddRecieptModel> RecieptsData
        {
            get { return _addRecieptModel; }

            set
            {
                if (_addRecieptModel == value) return;
                _addRecieptModel = value;
                this.NotifyPropertyChanged();
            }
        }

        public ReceiptViewModel()
        {

            Task.Run(async () => { await GetReciepts(); }).Wait();
            this.AddRecieptCommand = new Command(this.AddRecieptClicked);
            this.AddRecieptPopUpCommand = new Command(this.AddRecieptPopUpClicked);
            this.SelectedRecieptCommand = new Command(this.SelectedRecieptClicked);
        }

        private async Task<GetRecieptResponse> GetReciepts()
        {
            JsonValue GetRecieptResponse = await HttpRequestHelper<GetRecieptRequest>.GetRequest(ServiceTypes.GetReciepts,SessionHelper.AccessToken);
            GetRecieptResponse getRecieptResponse = JsonConvert.DeserializeObject<GetRecieptResponse>(GetRecieptResponse.ToString());
            if (getRecieptResponse.IsSuccess)
            {
                List<AddRecieptModel> lstGetReciepts = getRecieptResponse.LstReciepts.Select(dc => new AddRecieptModel()
                {
                    Name = dc.Name,Price = dc.Price,RecieptID = dc.RecieptID,Status = dc.Status
                }).ToList();

                RecieptsData = new ObservableCollection<AddRecieptModel>();

                foreach (AddRecieptModel getReciept in lstGetReciepts)
                {
                    RecieptsData.Add(getReciept);
                }
            }
            else
            {

            }
            return getRecieptResponse;
        }

        private async void AddRecieptClicked(object obj)
        {
            Task.Run(async () => { await AddReciept(); }).Wait();
        }

        public async Task<AddRecieptResponse> AddReciept()
        {
            AddRecieptRequest addRecieptRequest = new AddRecieptRequest();
            addRecieptRequest.AuthToken = SessionHelper.AccessToken;
            RecieptDTO recieptDTO = new RecieptDTO();
            recieptDTO.AddedOn = DateTime.Now.ToString();
            recieptDTO.Name = Name;
            recieptDTO.Price = Price;
            recieptDTO.RecieptID = RecieptID;
            recieptDTO.Status = ReceiptStatusEnum.New.ToString();
            recieptDTO.StoreID = 0;
            addRecieptRequest.recieptDTO = recieptDTO;
            JsonValue AddRecieptResponse = await HttpRequestHelper<AddRecieptRequest>.POSTreq(ServiceTypes.AddReciept,addRecieptRequest);
            AddRecieptResponse addRecieptResponse = JsonConvert.DeserializeObject<AddRecieptResponse>(AddRecieptResponse.ToString());
            if (addRecieptResponse.IsSuccess)
            {
                List<AddRecieptModel> lstGetReciepts = addRecieptResponse.LstReciept.Select(dc => new AddRecieptModel()
                {
                    Name = dc.Name,Status = dc.Status
                }).ToList();

                RecieptsData = new ObservableCollection<AddRecieptModel>();

                foreach (AddRecieptModel getReciept in lstGetReciepts)
                {
                    RecieptsData.Add(getReciept);
                }

            }
            return addRecieptResponse;
        }


        public void List1CollectionChanged(Object sender,NotifyCollectionChangedEventArgs e)
        {
            // Your logic here
        }

        private async void SelectedRecieptClicked(object obj)
        {
            int recieptID = Convert.ToInt32(((RecieptDTO)obj).RecieptID);
            var mdp = (Application.Current.MainPage as MasterDetailPage);
            var navPage = mdp.Detail as NavigationPage;
            if (navPage.Navigation.NavigationStack.Count == 0 ||
                            navPage.Navigation.NavigationStack.Last().GetType() != typeof(ProductList))
            {
                await navPage.PushAsync(new ProductList(recieptID),true);
            }
        }
        private void AddRecieptPopUpClicked(object obj)
        {
            PopupNavigation.PushAsync(new CreateList());
        }
    }

这是我的ListView,

 <ListView x:Name="ListReceipt" 
                                                  SelectionMode="Single"
                                                  HasUnevenRows="True"      
                                                  ItemsSource="{Binding RecieptsData}">
                        <ListView.Behaviors>
                            <behaviors:ItemTappedBehavior Command="{Binding SelectedRecieptCommand}" />
                        </ListView.Behaviors>

                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <ViewCell>
                                    <StackLayout Spacing="0">
                                        <Frame 
                                            
                                    HasShadow="True"  
                                    Padding="0"  
                                                
                                    BackgroundColor="White">
                                            <Frame.Margin>
                                                <OnPlatform x:TypeArguments="Thickness"  
                                             Android="0"   
                                             iOS="0"/>
                                            </Frame.Margin>
                                            <Grid RowSpacing="0" ColumnSpacing="0">

                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="Auto" />
                                                    <RowDefinition Height="Auto" />
                                                    <RowDefinition Height="Auto" />
                                                </Grid.RowDefinitions>

                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="Auto" />
                                                    <ColumnDefinition Width="Auto" />
                                                </Grid.ColumnDefinitions>

                                                <Label  Grid.Column="0" Margin="17,8" VerticalOptions="Center" Grid.Row="0" Grid.RowSpan="3"
                                               Text="&#xf15b;"
                                               FontSize="75"
                                                    TextColor="Teal"
                                               FontFamily="{StaticResource FontAwesomeSolid}" />

                                                <!-- Document Name -->
                                                <Label Grid.Column="1" Grid.ColumnSpan="5" FontFamily="{StaticResource Montserrat-SemiBold}"
                                               Grid.Row="0"
                                               Margin="0,13,0"
                                               Text="{Binding Name}"
                                               TextColor="{DynamicResource Gray-900}"
                                               FontSize="14"
                                              
                                                />

                                                <!-- Time -->
                                                <Label Grid.Row="1"
                                               Grid.Column="1"
                                               Margin="0,0"
                                                   Padding="5"
                                               Text="{Binding Status}"
                                               TextColor="{DynamicResource Gray-700}"
                                               FontSize="14"
                                               FontFamily="{StaticResource Montserrat-Medium}"
                                                />

                                                <!-- Document Size -->
                                                <Label Grid.Row="1" Grid.ColumnSpan="5"
                                               Grid.Column="2"
                                               Margin="0,15,0"
                                                   Padding="5"
                                               Text="{Binding CreatedOn}"
                                               TextColor="{DynamicResource Secondary}"
                                               FontSize="14"
                                               FontFamily="{StaticResource Montserrat-Medium}"
                                                />

                                                <Label Grid.Row="2"
                                               Grid.Column="5"
                                               Margin="0,10"
                                                   Padding="5"
                                               Text="&#xf044;"
                                                   HorizontalOptions="End"
                                               TextColor="{DynamicResource LightGreen}"
                                               FontSize="20"
                                               FontFamily="{StaticResource FontAwesomeSolid}">

                                                </Label>

                                            </Grid>
                                        </Frame>
                                    </StackLayout>
                                </ViewCell>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res