0

我正在尝试绑定 MVVMCross 对话框部分的 Visible 属性。

var refillSection = new Section() {
    new StringElement("Refill").Bind(this, "SelectedCommand OpenExternal")
}.Bind(this, "Visible IsExternal,Converter=Visibility");
root.Add(refillSection);

我也尝试过直接绑定元素的可见性,但也不起作用。

var refillSection = new Section() {
    new StringElement("Refill").Bind(this, "SelectedCommand OpenExternal;Visible IsExternal,Converter=Visibility")
};
root.Add(refillSection);

难道我做错了什么?我安装了可见性插件。

4

1 回答 1

2

Visible在 DialogElement上实际上是一个bool- 见https://github.com/slodge/MvvmCross/blob/v3/CrossUI/CrossUI.Touch/Dialog/Elements/Element.cs#L71

因此,Visibility绑定到Visible.

Visible最近在此拉取请求中将其本身添加到 Dialog - https://github.com/slodge/MvvmCross/pull/294

正如您可能从关于该请求的讨论中看到的那样,那里有一些关于如何扩展Visible以使其适用于Sections 甚至适用于 的讨论Root。但是,遗憾的是,我认为这些讨论没有成功实施——所以我不相信默认值Section目前适用于Visible.

对于您用于显示/隐藏其中一个的特定的易于理解的场景Section,那么我认为您可以通过继承和覆盖 / 类中的某些功能Section以及可能的DialogViewController/DialogAdapter类来在您的应用程序中实现这一点。如果有帮助,Section继承的一个例子BindableSectionhttps://github.com/slodge/MvvmCross-Tutorials/blob/master/DialogExamples/DialogExamples.Touch/BindableElements/BindableSection.cs

于 2013-08-27T09:23:50.827 回答