Xamarin.Forms UWP - 无法在ViewCell中更新视图(适用于iOS)

时间:2017-11-07 19:51:10

标签: c# listview xamarin uwp xamarin.uwp

我正在使用Xamarin.Forms MVVM移动应用,其页面的ListView

我尝试访问ViewCell中的ListView之一,然后在页面加载后立即更新ViewCell内的内容。最后,我尝试制作动画(通过TranslateTo()),但出于测试目的,我只想尝试在ViewCell内隐身(通过设置IsVisible = false )。

它适用于我的iOS项目,但不适用于我的UWP项目。什么都没发生; ViewCell内容永远不会受到影响。

基本代码是:

----------------
MyPage.cs
----------------
public MyPage() // constructor
{
    _viewModel = new MyViewModel();
    ...
    ...
}

// on page load, subscribe to a message that modifies a ViewCell in the ListView;
// when that message is called in the ViewModel, it correctly modifies the ViewCell
// in iOS, but in UWP it does nothing;
protected override async void OnAppearing()
{
    MessagingCenter.Subscribe<MyViewModel>(this, "ModifyViewCell", (sender) =>
    {
        // get item cell to modify (for testing, just get first one);
        // see code in ListViewExt.cs a little farther down for GetCell() method
        MyViewCellView viewCell = GetCell(0); // MyViewCellView : ViewCell

        // modify cell - try different methods
        viewCell.IsEnabled = false;
        viewCell.View.IsVisible = false;
        viewCell.MyViewInsideCell.IsVisible = false; // <<<==== breakpoint
    }
}


-------------------
MyViewModel.cs
-------------------
public MyViewModel() // constructor
{
    // send message to update ViewCell in ListView
    Device.BeginInvokeOnMainThread(() => {
        MessagingCenter.Send(this, "ModifyViewCell");
    });
}
调用ViewCell方法时,ListView的{​​{1}} ListView存储在自定义ListViewExt类(ListView.SetupContent())的词典中(在下面重写) ):

ListViewExt.cs
------------------------
// store ListView ViewCell's in dictionary for access later
public Dictionary<int, ViewCell> CellDict { get; set; } = new Dictionary<int, ViewCell>();

protected override void SetupContent(Cell cell, int index)
{
    base.SetupContent(cell, index);

    // add ViewCell to dictionary on SetupContent()
    CellDict.Add(index, (ViewCell)cell);
}

public GetCell(int index)
{
    return CellDict[index];
}

我还尝试在我尝试修改ViewCell的行中的代码中设置断点(我在上面的代码中注释了注释中的断点) ),当我将鼠标悬停在viewCell上时,Intellisense似乎表明我对ViewCell视图(viewCell.MyViewInsideCell - 有一个有效的引用 - 它说它是Xamarin。 Forms.Grid,它是)。但即使有一个有效的参考,我似乎也不会影响它的任何属性。

这是一个Xamarin UWP错误吗?它似乎是。

我已经记录了bug in Bugzilla here

Here's a link to a sample project重现问题。

0 个答案:

没有答案