2015-05-17 4 views
1

, вероятно, есть очень простая причина, почему это не работает, но я пробовал все. У меня есть TextBlock с текстом, связанным с переменной, переменная изменяется, но текст не делает:Почему мой XAML не отвечает на изменение переменной

<TextBlock x:Name="modeLabel" Style="{StaticResource IndiTextBlock}" Height="23" TextWrapping="Wrap" Grid.Row="0" Text="{Binding ModeLabelText}" Margin="35,22,58,0"/> 

Код, который контролирует текст значение в ViewModel:

public string ModeLabelText { get { return _modeLabeltext; } } 
public ComboBoxItem SelectedMode { get { return _selectedMode; } 
set 
{ 
    if (_selectedMode == value) return; 
    _selectedMode = value; 
    ToggleMode(null); 
    EvaluateScenario(null); 
} 

и

private void ToggleMode(object parameter) 
{ 
    if (_isBasicCalculation) 
    { 
     _modeLabeltext = "Target profit"; 
     _isBasicCalculation = false; 
    } 
    else 
    { 
     _modeLabeltext = "Total to invest"; 
     _isBasicCalculation = true; 
    } 
} 
+2

Вы установили контекст данных для него, а также осуществлять INotifyPropertyChanged –

ответ

2

Ваш класс должен реализовать интерфейс INotifyPropertyChanged, и об изменениях своих переменных, вы должны инициировать событие

public class Model : INotifyPropertyChanged 
{ 
    public event EventHandler PropertyChanged; // event from INotifyPropertyChanged 

    protected void RaisePropertyChanged(string propertyName) 
    { 
     var local = PropertyChanged; 
     if (local != null) 
     { 
      local.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    public void ToggleMode() 
    { 
     // ... your code ... 
     RaisePropertyChanged("ModelLabelText"); 
    } 
} 
0

Спасибо Nguyen Kien

private void ToggleMode(object parameter) 
    { 
     if (_isBasicCalculation) 
     { 
      _modeLabeltext = "Target profit"; 
      OnPropertyChanged("ModeLabelText"); 
      _isBasicCalculation = false; 

     } 
     else 
     { 
      _modeLabeltext = "Total to invest"; 
      OnPropertyChanged("ModeLabelText"); 
      _isBasicCalculation = true; 
     } 

    } 
+0

Поскольку изменения в обеих ветвях КРП , вы можете смело поместить вызов метода OnPropertyChanged за пределы if :) – Icepickle