2016-10-20 2 views
0

hier meine XAML ist:wpf IsEnabled Schaltfläche Bindung, nur einmal funktioniert .... haben bereits Property Benachrichtigung

<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}"/> 

hier ist mein Eigentum:

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

funktioniert es mit dem, was ich es eingestellt beim Start, aber wenn ich den bool später im Code manipuliere, wird die Änderung nicht in der WPF widergespiegelt. Ich habe den Datenkontext korrekt eingestellt, da alle anderen Bindungen perfekt funktionieren.

Auch wenn ich den Bool im Code manipuliere verwende ich die Eigenschaft und nicht das private Feld.

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

ich Sie gehe davon sind den Eigenschaftswert nicht den privaten Feldwert zu ändern? – adminSoftDK

+0

korrekt. Das ist, was ich für alle meine Bindungen tue und sie alle gut funktionieren (außer diesem) –

+0

Ich laufe es einfach und es funktioniert gut. Woher weißt du, dass die Bindung korrekt ist? Es gibt ein paar Dinge, die Sie überprüfen können, ist das Ausgabefenster, um nach Fehler 40 zu suchen, und ein anderer ist, einen Unterbrechungspunkt auf dem Getter Ihrer Eigenschaft zu setzen, um zu sehen, ob der Xaml tatsächlich davon liest. – adminSoftDK

Antwort

0

Es funktioniert, stellen Sie sicher, dass Sie die öffentliche Eigenschaft in Ihrem Code setzen und nicht den privaten Bereich:

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

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

ja das ist was ich mache –

+0

private void OnStartProcess() { IsStartButtonEnabled = false; –

+0

Ich habe den Beitrag aktualisiert, um zu reflektieren, dass –