Xamarin.forms 如何刷新对象?

Xamarin.forms 如何刷新对象?,xamarin.forms,Xamarin.forms,我有一个表示演员的属性 private Actor _actor; public Actor Actor { get => _actor; set { if (_actor != value) { _actor = value; OnPropertyChanged("Actor"); } } } 以及一个列表,带有一个复选标记,该复选标记取决于参与者的状态。当我点击标签

我有一个表示演员的属性

private Actor _actor;

public Actor Actor
{
    get => _actor;
    set
    {
        if (_actor != value) {
            _actor = value;
            OnPropertyChanged("Actor");
        }   
    }
}
以及一个列表,带有一个复选标记,该复选标记取决于
参与者的状态。当我点击标签时,
Actor
的状态将改变复选标记

private async void OnSelectionAsync(object item)
{
    Actor = item;
但是我看不到我的
列表视图中的更改,为什么

编辑1:

在我的列表中,我正在绑定actor Text=“{binding actor.id}以发送转换器并更改项检查

<Label IsVisible="False" x:Name="dTd" Text="{Binding Actor.id}" />

<ListView ItemsSource="{Binding Actors}">
    ...
    <Image Source="" IsVisible="{Binding id , Converter={StaticResource MyList}, ConverterParameter={x:Reference dTd}}"/>

...

据我所知,您正在使用标签的文本来确定是否选择了某个演员。无论如何,您没有以任何方式绑定到该文本,但您正在使用标签本身作为绑定参数。我不确定,但在我看来似乎是“绑定”“这种方式的值不能按您的预期工作,因为更改通知没有以这种方式订阅。无论如何,当您刷新该列表时,绑定将被刷新,转换器将与新值一起使用。由于
ConverterParameter
不是可绑定的属性,因此我怀疑是否有机会以这种方式使用它

我要做的是扩展您的
Actor
类,或者使用该属性创建一个新的
ActorViewModel

public bool被选中
{
get=>isSelected;
设置
{
如果(值==isSelected)
{
返回;
}
isSelected=值;
OnPropertyChanged(名称(IsSelected));
}
}
现在可以从
列表视图
绑定到该属性


现在需要做的就是相应地设置属性

私有异步void onSelectionSync(对象项)
{
参与者=作为参与者的项目;
foreach(演员中的演员)
{
Actor.IsSelected=Actor.id==Actor.id;
}
}

这样,更改应该反映在
列表视图中

请发布相关代码。您正在描述操作,但没有显示执行这些操作的代码,因此我们不可能说出您可能做错了什么。还不清楚参与者和类别之间的关系是什么,或者应该用什么属性来驱动复选框控件的值。能否在
ResourceDictionary
中发布该部分,您可以在其中定义转换器资源和转换器的代码?“我相信你的问题根源就在那里。”PaulKertscher但当我刷新我的列表时,我可以看到变化them@mikkylekyle哦,我明白了。@PaulKertscher但我不想刷新我的列表,另一种解决方案?不刷新列表视图,为什么?