【发布时间】:2013-06-25 11:19:05
【问题描述】:
我有一个带有 ListView 和 AppBar 的页面。我想确保 AppBar 无法打开/可见,除非 ListViews 的选定项不为空。
所以我这样实现了 AppBar:
<Page.BottomAppBar>
<AppBar x:Name="bottomAppBar" Padding="10,0,10,0">
<AppBar.IsOpen>
<Binding ElementName="MyGrid" Path="SelectedItem" Converter="{StaticResource ValueToBooleanConverter}"/>
</AppBar.IsOpen>
</AppBar>
</Page.BottomAppBar>
ValueToBooleanConverter 是一个 IValueConverter,它根据 GridView 的 SelectedItem 是否为空来检查是否返回布尔值。
即使 GridView Selected Item 为空,AppBar 也会出现。
这里有什么问题?
【问题讨论】:
-
这里有precedence rules that govern dependency property values 可以发挥作用。也就是说,您确定要创建这样的行为吗?这是一个相当主观的问题,但我会说应用栏有时出现而不是其他时候出现对于用户来说可能并不直观。也许将应用栏上各种命令的启用绑定到选定状态,甚至在没有选择时在栏上包含一些文本以提示用户如何启用各种功能?
-
谢谢尼尔。我有一个项目列表,以及在选择项目时变得可见的按钮。我认为将这些按钮放在应用栏中,然后在选择项目时打开它会很聪明。事实证明,这样做非常困难,我一直在寻找 XAML 中的解决方案。现在,如果我对您的理解正确,您是说这根本不是一个好主意。为一组命令保留应用栏,并且在选择项目时不要更改它。我同意——用户会觉得这很混乱。另外,感谢有关依赖属性优先规则的链接。
标签: c# xaml windows-8 windows-store-apps winrt-xaml