2016-06-10 184 views
0

我在我的UI中有10個按鈕,當我按下其中一個按鈕時,我需要禁用其餘的按鈕;但這裏是棘手的部分:刷新後更新按鈕狀態wpf

我有一個後臺線程運行在實時更新的while循環下。 後臺線程更新UI(10個按鈕狀態和其他東西),事情是一旦我點擊所有的按鈕被禁用(好),但刷新停止按鈕上工作(他們保持禁用)。

爲什麼我需要禁用按鈕知道他們將在一秒鐘後改變狀態?因爲同步數據效率不高,所以有0.5秒的差距(從數據庫獲取數據並更新用戶界面),並且在0.5秒內,用戶可以按下一些他不應該按的按鈕。

<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

您正在禁用「FirstGoButtonClick」事件中的所有按鈕,但您又將其全部啓用了哪些按鈕? – SWilko

+0

我有一個屬性「First.JobLight」綁定一個轉換器,這個屬性,都會通過我的後臺線程更新,並講述了女巫狀態下的按鈕,他應該是: 的IsEnabled =「{結合First.JobLight,轉換器= {StaticResource的JobLight2ButtonConv} } 的想法是,如果我點擊一個按鈕,然後 - >禁用所有按鈕,直至發生刷新和重置他們INTIAL狀態是現在很清楚 –

+0

'First.JobLight'需要實現'INotifyPropertyChanged'和價值?需要改變該轉換器可以運行。如果你在哪裏工作'JobLight'改變你會發現你的問題 – SWilko

回答

1
FirstStop.IsEnabled = false; 

該代碼去除結合,所以,後續的更新值到JobLight不會被框架被識別。

你可以做的是使用SetCurrentValue

或者將按鈕集合放入選擇器中,並在SelectionChanged發生時處理JobLight屬性。

+0

完美,謝謝! –