我已简单的问题,设置了两个路数据绑定的一个框在Silverlight3.0.它必须是一个没有脑子,但可能我忘了我的大脑家今天...

我定义的一个模型代表了我..'数据'。我实施的举界面,以使UI的时候看到的数据的变化。

public class Model : INotifyPropertyChanged
{
    private bool _value;
    public bool Value
    {
        get { return this._value; }
        set
        {
            if (this.PropertyChanged != null)
                this.PropertyChanged(this, new PropertyChangedEventArgs("Value"));
            this._value = value;
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

下一次我把一个框及一个按钮。'形式':

    <StackPanel Orientation="Horizontal">
        <CheckBox x:Name="check" IsChecked="{Binding Value, Mode=TwoWay}" Content="SomeLabel"/>    
        <Button Click="Button_Click" Content="Test" />
    </StackPanel>

然后我提供的数据的构造:

    public MainPage()
    {
        InitializeComponent();

        this.DataContext = new Model() { Value = true };
    }

问题是你击框到检查/取消除非我去实施的举.如果去实现它,然而,那么UI不注意到,如果我改变的基础数据。

如果我删除该模式=双向位从IsChecked结合的表达,那么也UI不会注意到基础数据的变化,甚至如果该模型正在实施的界面。

我如何可以做到:

  1. 有的复选定的在启动时数据
  2. 有框IsChecked的改变修改的基础数据
  3. 有框检测的基础数据的变化和更新本身?
有帮助吗?

解决方案

你已经有了一个测序错误,在你的设性的过程,需要分配到 _value 之前 通知改变:-

    set
    {
        this._value = value;
        if (this.PropertyChanged != null)
            this.PropertyChanged(this, new PropertyChangedEventArgs("Value"));

    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top