绑定问题 - 视图上的值不更新

时间:2014-02-19 11:50:06

标签: c# wpf binding

我想要实现的是,当勾选复选框时,文本框将显示True,当取消选中该复选框时,文本框将显示False。

目前的问题是,最初它可以工作,将检查框,文本框将显示为true。但是当我取消选中它时,文本框仍然是True。

很抱歉,如果我遗漏了一些简单的东西,仍然试图掌握Wpf和c#。

感谢您的帮助。

的Xaml:

<Grid>
<CheckBox Content="Check me" HorizontalAlignment="Left" Height="19" Margin="88,63,0,0" VerticalAlignment="Top" Width="86"  IsChecked="{Binding CurrentValue, Mode= TwoWay}"/>
<TextBlock Text="{Binding CurrentValue, Mode=TwoWay}" HorizontalAlignment="Left" Height="39" Margin="88,82,0,0" TextWrapping="Wrap"  VerticalAlignment="Top" Width="86"/>
</Grid>

主窗口:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = new MainView();
    }

}

的MainView:

 public class MainView : INotifyPropertyChanged
    {  

    private bool currentValue = true;
    public event PropertyChangedEventHandler PropertyChanged;

    public bool CurrentValue
    {
        get
        {
            return currentValue;
        }
        set
        {
            if (currentValue == value)
            {
                return;
            }
                currentValue = value;
                RaisePropertyChange("Check_Value");

        }
    }



    protected void RaisePropertyChange(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

    }

}

2 个答案:

答案 0 :(得分:2)

您正在按照如何正确解决此问题

错误地设置您的媒体资源
  public bool CurrentValue
    {
        get
        {
            return currentValue;
        }
        set
        {
            if (currentValue != value)
            {    
              currentValue = value;
             RaisePropertyChange("CurrentValue");
            }



    }
}

答案 1 :(得分:1)

而不是

RaisePropertyChange("Check_Value");

尝试

RaisePropertyChange("CurrentValue");

传递的值必须与您的媒体名称相同