为什么我的XAML不能响应变量中的更改?



可能有一个非常简单的原因,为什么这不起作用,但我已经尝试了一切。我有一个TextBlock文本绑定到一个变量,变量变化,但文本不变:

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

控制文本值的代码位于视图模型中:

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;
    }
}

您的类必须实现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");
    }
}

Thank you 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;
        }
    }

最新更新