【发布时间】:2019-02-01 17:45:37
【问题描述】:
我有一组按钮,只要单击其中一个按钮就会启用,而单击的那个按钮会被禁用。
<Button DockPanel.Dock="Top" Style="{StaticResource BigGrayButton}" Command="{Binding Path=NavigatePage}" IsEnabled="{Binding Path=EnableButton}"/>
<Button DockPanel.Dock="Top" Style="{StaticResource BigGrayButton}" Command="{Binding Path=NavigatePage}" IsEnabled="{Binding Path=EnableButton}"/>
<Button DockPanel.Dock="Top" Style="{StaticResource BigGrayButton}" Command="{Binding Path=NavigatePage}" IsEnabled="{Binding Path=EnableButton}"/>
<Button DockPanel.Dock="Top" Style="{StaticResource BigGrayButton}" Command="{Binding Path=NavigatePage}" IsEnabled="{Binding Path=EnableButton}"/>
问题是使用上述代码导致在执行命令后将 EnableButton 设置为 false 时禁用所有按钮。
【问题讨论】:
-
通常,您只需确保CanExecute is false for that button。您真的将相同的命令绑定到所有按钮吗?如果是,您如何确定点击了哪一个(因为,我认为它会对您的应用产生影响)?如果所有按钮都完全相同,为什么你有 4 个而不是 1 个?
-
试试
RadioButton,很适合这种情况 -
问题是所有按钮都被禁用了,但我想要的是只禁用单击的一个并启用所有其他按钮。
-
那么每个按钮必须有一个命令?
-
@HmH:啊,我明白了,所以按钮基本上是用于选择要显示的页面的切换按钮,对吧?在这种情况下,最简单的解决方案是让
CanExecute返回false,如果参数等于当前显示的页面,否则true。你根本不需要IsEnabled。