Xamarin.Froms OnPropertyChanged来自另一个页面

时间:2018-03-12 14:42:43

标签: c# binding xamarin.forms

我有一个标签页,上面有一些标签。

在其中两个标签中,我有一个列表。

在第一个列表中添加/编辑记录时,我需要刷新第二个列表,

因为在第二个列表的模型中有一个布尔属性,用于隐藏或不隐藏图像。

此行为无效。

如果我设置

SecondList = ObservableCollection<SecondClass>();

第二个列表正确更新,显示为空。

如果我更改了第二个列表属性ShowImage,则列表未更新,变量为,但ListView不是。

如果我继续使用第二个标签并手动添加记录,则第二个列表会正确更新。

这是我用来执行此操作的代码:

MessagingCenter.Subscribe<RigaDettaglioViewModel>(this, Costanti.ChiaviMessaggi.AggiornaListaRigheWo.ToString(), (sender) => {
                RaisePropertyChanged(() => ListaWORighe); // Update the first list.
                RaisePropertyChanged(() => ListaSpese); // Update the second list.
            });

RaisePropertyChanged

public void RaisePropertyChanged<T>(Expression<Func<T>> Property) {
    var name = GetMemberInfo(Property).Name;
    OnPropertyChanged(name);
}

XAML (VolosBaseButtonView是包含图片视图的网格):

<view:VolosBaseButtonView 
    Grid.Row="0" Grid.Column="4"
    SoloIcona="True"  
    ColoreIcona="Red"
    Icon="{core:Icona Warning}"                                             
    IsVisible="{Binding ShowImage}" 
    CommandParameter="{Binding .}"
    Command="{Binding BindingContext.ApriInfoSpesaCommand, Source={x:Reference SpeseViewPage}}"/>

ListaSpese (第二个列表):

public ObservableCollection<WorkOrderDettaglioListaSpese> ListaSpese {
        get {
            ObservableCollection<WorkOrderDettaglioListaSpese> Lista = null;

            if (WoDett.ListaSpese != null) {
                var ListaOrdinata = WoDett.ListaSpese.Where(R => !Utility.FlagTrattAnnullato(R.FlagTratt)).OrderByDescending(R => R.DataSpesa).ToList();
                // Devo controllare, per ogni spesa, se c'è un intervento in quella data, altrimenti NoInterventoInData = true;
                WorkOrderService.ControllaDateIntervento(ListaOrdinata);
                Lista = new ObservableCollection<WorkOrderDettaglioListaSpese>(ListaOrdinata);
            }

            return Lista;
        }
        set {
            WoDett.ListaSpese = new List<WorkOrderDettaglioListaSpese>(value);
            RaisePropertyChanged(() => ListaSpese);
        }
    }

如何正确更新第二个标签中的列表?

谢谢!

修改

Link到示例项目。

0 个答案:

没有答案