根据另一个控件的视觉状态设置可见性

Setting Visibility based on another control's visualstate

是否可以根据另一个控件的视觉状态设置 Grid 或其他元素的可见性?我刚刚开始思考 VisualStateManager 概念(发现样式触发器不能在通用应用程序中使用),但不知道是否可以这样做。

对于我的具体情况,如果当前选择了 ListView 中的特定 item/index,我是否可以设置一个或多个元素的可见性?如果是,怎么做?

我会在视图模型的 属性 中保留 ListView 选择并将 Grid.Visibility 绑定到那个 属性。您将需要 IValueConverter 将所选项目的数据类型转换为 System.Windows.Visibility,这是 Grid.Visibility 绑定所必需的。

如果确定可见性的逻辑更复杂,例如需要应用程序状态,您可以将 属性 bool IsImportantItemSelected 添加到视图模型并将 Grid.Visibility 绑定到此 属性。这种方法允许您将复杂的逻辑保留在视图模型中。您需要再次使用 IValueConverter 才能从 bool 转换为 System.Windows.Visibility