2016-10-20 21 views
0

這裏是我的XAML:WPF的IsEnabled按鈕綁定,只能使用一次....已經擁有的PropertyChange通知

<Button 
x:Name="StartBtn" 
Content="Start" 
Command="{Binding StartProcess}" 
HorizontalAlignment="Left" 
Height="23" 
Margin="241,181,0,0" 
VerticalAlignment="Top" 
Width="57" 
Grid.Column="1" 
IsEnabled="{Binding IsStartButtonEnabled}"/> 

這裏是我的財產:

private bool _isStartButtonEnabled; 
     public bool IsStartButtonEnabled 
     { 
      get { return _isStartButtonEnabled; } 
      set 
      { 
       _isStartButtonEnabled = value; 
       OnPropertyChanged("IsStartButtonEnabled"); 
      } 
     } 

它的工作原理與任何我設置在啓動時,但是當我稍後在代碼中操作bool時,更改不會反映在WPF中。我確實正確設置了數據上下文,因爲其他綁定都完美地起作用。

另外,當我在代碼中操作布爾時,我使用的是屬性而不是私有字段。

private void OnStartProcess() 
     { 
      IsStartButtonEnabled = false; 
      //stuff 
     } 
+0

我假設你正在改變屬性值不是私有字段值? – adminSoftDK

+0

正確。多數民衆贊成在我所有的綁定,他們都工作正常(除了這一個) –

+0

我只是運行它,它工作正常。你怎麼知道綁定是正確的?有幾件事你可以檢查一個是輸出窗口來查找錯誤40,另一個是在屬性的getter上設置一個斷點,以查看xaml是否實際讀取它。 – adminSoftDK

回答

0

它正在工作,請確保您設置在代碼中的公共財產,而不是私有字段:

public RelayCommand StartProcess 
    { 
     get 
     { 
      return new RelayCommand(Execute); 
     } 
    } 

    private void Execute() 
    { 
     IsStartButtonEnabled = false; 
    } 
+0

是啊多數民衆贊成在即時通訊 –

+0

私人無效OnStartProcess() { IsStartButtonEnabled = false; –

+0

我更新了帖子,以反映當您執行時斷點在那裏的 –