Я немного потерял, я пытаюсь привязать метку в моем графическом интерфейсе к строке в моем коде, но она работает только, если я поместил код в мой блок MainWindow(), и я не могу его обновить нигде.Связывание данных, похоже, работает в MainWindow() WPF
Это мой INotifyPropertyChanged класс:
public class MyClass : INotifyPropertyChanged
{
private string _testLabel;
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, e);
}
protected void OnPropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
public string testLabel
{
get { return _testLabel; }
set
{
if (value != _testLabel)
{
_testLabel = value;
OnPropertyChanged("testLabelChanged");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
Это MainWindow() блок:
public MainWindow()
{
InitializeComponent();
testLabelName.DataContext = t;
t.testLabel = "Hello World 32432";
}
Я также объявил это вне:
MyClass t = new MyClass();
Это является фрагмент из моего XAML:
<Label Name="testLabelName" Content="{Binding Path=testLabel, Mode=OneWay}" Height="28" Margin="0,0,12,29" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="128" />
Я попытался проверить его, используя событие кнопки, чтобы установить метку, она, кажется, установлена, но никаких изменений в графическом интерфейсе нет. Я думаю, что GUI не обновляется в событии PropertyChanged. Это правильно?
Спасибо,
Вы, сэр, изумительны. Спасибо! –
Простейшим способом избежать опечаток в будущем было бы просто использовать функцию OnPropertyChanged (nameof (testLabel)) 'C# 6. – ghord