我的UI中有10个按钮,当我按下其中一个按钮时,我需要禁用其余按钮;但这里是棘手的部分:
我有一个后台线程在while循环下运行以进行实时更新。 后台线程更新UI(10个按钮状态和其他东西),事情是我点击所有按钮被禁用(好),但刷新停止工作按钮(他们保持禁用)。
为什么我需要禁用按钮,知道它们会在一秒钟后改变状态?因为同步数据不是很有效,所以有0.5s的差距(从数据库获取数据并更新UI),在0.5s内,用户可以按下一些他不应该按下的按钮。
<Button Name="FirstGo" Width="60" Content="{StaticResource ButtonText_Go}" Click="FirstGoButtonClick" IsEnabled="{Binding First.JobLight,Converter={StaticResource JobLight2ButtonConv}}"/>
private void FirstGoButtonClick(object sender, RoutedEventArgs e)
{
FirstStop.IsEnabled = false;
SecondGo.IsEnabled = false;
SecondStop.IsEnabled = false;
//..... disabeling the other 6
//doing some stuff
ViewModel.RunFirstJob();
}
答案 0 :(得分:1)
FirstStop.IsEnabled = false;
此代码删除了绑定,因此,框架将无法识别JobLight的后续更新值。
您可以使用SetCurrentValue。
或者将按钮集合放入Selector并在SelectionChanged发生时处理JobLight属性。