#c# #data-binding
#c# #привязка данных
Вопрос:
Поэтому мне нужно использовать WinForms, потому что мое приложение будет работать на mono.
У меня есть класс с именем Logic, и у меня есть свойство типа Part, в этом классе у меня есть номер детали. Я хотел бы обновить пользовательский интерфейс с помощью номера детали при изменении детали. Все, что я могу сделать, это привязать к части, а не к свойству части.
public class Logic : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public Part Part { get; private set; }
public void ChangeSequence(int fixtureId)
{
Part = new Part() {partNumber = "aetrasdsd"};
this.OnPropertyChanged(nameof(Vitrek_Library.Part));
}
}
public partial class Main : Form
{
public Main()
{
InitializeComponent();
Program.Logic.Initialize(omronEthernetFINSCom1);
Program.Logic.DataSubFixtureId.DataChanged = DataSubFixtureID_DataChanged;
Program.Logic.SequenceDone = Logic_SequenceDone;
Binding b = new Binding("Text", Program.Logic, nameof(Vitrek_Library.Part) ".partNumber", true)
{
//FormatString = $"Part Number: {0}"
};
lblPartNumber.DataBindings.Add(b);
}
}
Ответ №1:
Проблема с установкой пути привязки к Part.PartNumber заключалась в том, что Part был нулевым во время привязки.