刷新wpf后更新按钮状态

时间:2016-06-10 08:34:40

标签: wpf button mvvm

我的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();
        }

1 个答案:

答案 0 :(得分:1)

 FirstStop.IsEnabled = false;

此代码删除了绑定,因此,框架将无法识别JobLight的后续更新值。

您可以使用SetCurrentValue

或者将按钮集合放入Selector并在SelectionChanged发生时处理JobLight属性。