WPF在绑定源更改时更新UI

WPF在绑定源更改时更新UI,wpf,user-interface,binding,datatemplate,Wpf,User Interface,Binding,Datatemplate,我有一个带有listbox和contentcontrol的WPF应用程序。contentcontrol内容绑定到listbox,并具有一个datatemplate,该datatemplate显示一个文本框,其内容绑定到所述listbox中所选项目的变量。到目前为止,一切正常,即当我从列表框中选择一个项目时,文本框的内容将更改为变量的当前值。但是,如果在运行时更改变量的值,则文本框不会更新,除非我选择另一个listbox项,然后再次选择原始项。有没有关于我做错了什么或我在这里遗漏了什么的想法?我以

我有一个带有listbox和contentcontrol的WPF应用程序。contentcontrol内容绑定到listbox,并具有一个datatemplate,该datatemplate显示一个文本框,其内容绑定到所述listbox中所选项目的变量。到目前为止,一切正常,即当我从列表框中选择一个项目时,文本框的内容将更改为变量的当前值。但是,如果在运行时更改变量的值,则文本框不会更新,除非我选择另一个listbox项,然后再次选择原始项。有没有关于我做错了什么或我在这里遗漏了什么的想法?我以为文本框的值会自动改变?非常感谢你的帮助

以下是示例(MainWindow.xaml)

额外的课程:

public class MyItem
{
    public MyItem(Int32 Value)
    {
        this.Value = Value;
    }

    public Int32 Value { get; set; }
}
以及模板:


我肯定我错过了一些东西,比如通知UI源代码中的更改或以某种方式调用刷新。这是我真正的问题的一个更加简化的版本,其中包括控件和标签等,当源代码更改时必须刷新这些控件和标签。干杯:)

MyItem类可能需要实现
INotifyPropertyChanged
接口。当Value属性发生更改时,调用OnPropertyChanged(“Value”)通知接口该值已更改,需要重新绘制

public class MyItem : INotifyPropertyChanged
{
    public MyItem(Int32 Value)
    {
        this.Value = Value;
    }

    private Int32 _value;
    public Int32 Value 
    { 
        get { return _value; } 
        set { _value = value; OnPropertyChanged("Value"); }
    }
}

MyItem类可能需要实现
INotifyPropertyChanged
接口。当Value属性发生更改时,调用OnPropertyChanged(“Value”)通知接口该值已更改,需要重新绘制

public class MyItem : INotifyPropertyChanged
{
    public MyItem(Int32 Value)
    {
        this.Value = Value;
    }

    private Int32 _value;
    public Int32 Value 
    { 
        get { return _value; } 
        set { _value = value; OnPropertyChanged("Value"); }
    }
}

一些代码示例可能会有所帮助。听起来您可能正在侦听listbox上的事件,因此当listbox更改时,您会在Textbox中获得更新,但如果您更改变量,它不会发出通知,因此您的Textbox不会更改。一些代码示例可能会有所帮助。听起来您可能正在侦听列表框上的事件,因此当列表框发生更改时,您会在文本框中获得更新,但如果您更改变量,它不会发出通知,因此您的文本框不会更改。嗨,Rachel,谢谢您的提示。是的,我知道你是从哪里来的,我已经测试过了,它可以工作了,谢谢你给我指明了正确的方向。谢谢!嗨,瑞秋,谢谢你的提示。是的,我知道你是从哪里来的,我已经测试过了,它可以工作了,谢谢你给我指明了正确的方向。谢谢!
public class MyItem : INotifyPropertyChanged
{
    public MyItem(Int32 Value)
    {
        this.Value = Value;
    }

    private Int32 _value;
    public Int32 Value 
    { 
        get { return _value; } 
        set { _value = value; OnPropertyChanged("Value"); }
    }
}