Я немного новичок в привязке данных и, очевидно, не совсем понимаю. Я пытаюсь привязать простое свойство .net к метке и обновлять эту метку при каждом изменении свойства. Это не работает, и я не уверен, в чем проблема.
Вот мой XAML
<Label Content="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}"></Label>
<Button Name="bChangeProperty" Click="bChangeProperty_Click">Change Property</Button>
Вот мой файл UserControl cs
public partial class MyUserControl : UserControl, INotifyPropertyChanged
{
private MyObjectClass _myObject;
public MyObjectClass MyProperty
{
get { return _myObject;}
set
{
if (_myObject != value)
{
_myObject = value;
OnPropertyChanged("MyProperty");
}
}
}
public MyUserControl(MyObjectClass obj)
{
if (obj == null)
{
obj = new MyObjectClass();
obj.Name = "Frank";
}
MyProperty= obj;
base.DataContext = MyProperty;
}
//INotifyPropertyChanged stuff
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
//PropertyChanged is always null, don't really understand this part
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private void bChangeProperty_Click(object sender, RoutedEventArgs e)
{
//Create a new object, and set it to the MyProperty Property - which I thought
//would update the label, but it doesn't
MyObjectClass newObject = new MyObjectClass();
newObject.Name = "Bob";
MyProperty= newObject;
}
Вот MyObjectClass
public class MyObjectClass
{
public string Name {get; set;}
}
Начальная привязка работает, она устанавливает метку «Frank», но когда я нажимаю кнопку и объект изменяется, метка не обновляется. Это всего лишь пример чего-то вроде того, что я пытаюсь сделать.
Нужно ли где-то устанавливать PropertyChanged? Я вроде думал, что именно это и должно было делать XAML, но, видя, что он всегда нулевой, по-видимому, это не так.