更新
找到了一种更好的方式来隐藏 Monotouch Dialog (MT D) 元素并改变它们的高度。
创建一个继承自您正在使用的 MT D 元素的自定义类
public class DateElement : CrossUI.Touch.Dialog.Elements.DateElement, IElementSizing
并实现 IElementSizing 接口的 GetHeight
public nfloat GetHeight(UITableView tableView, Foundation.NSIndexPath indexPath)
{
if (this.Visible == false)
{
return 0;
}
else
{
return 44.0f;
}
}
只要 DialogViewController 被标记为具有 UnevenRows,实现 IElementSizing 的元素就会调用它们的 GetHeight。当元素不可见时,只需返回 0。
某些元素已经实现了 GetHeight,因此您可以在元素可见时调用基本实现。其他时候你将不得不自己实现一些东西。这可以是硬编码固定大小或测量 Caption 和 Detail 文本。
我可以“隐藏和显示”元素的唯一方法是在需要时删除和插入元素。
我们正在使用 MVVMCross,并且我正在绑定到 ViewModel 属性来控制可见性。现在我正在使用 MvxPropertyChangedListener 并监听之前绑定的相同属性。
现在,当属性更改时,我在 Section 上调用 Remove 和 Insert 方法。不是我想要的,但它有效。