Я хочу связать строку с текстовым полем. Строка постоянно обновляется в теме:Связывание постоянно обновляемой строки с текстовым полем
String inputread;
public event PropertyChangedEventHandler PropertyChanged;
public string InputRead
{
get { return inputread; }
set
{
if (Equals(inputread, value) == true) return;
inputread = value;
this.OnPropertyChanged(nameof(this.inputread));
}
}
void threadFunc()
{
try
{
while (threadRunning)
{
plc.Read();
InputRead =plc.InputImage[1].ToString();
MessageBox.Show(InputRead);
}
}
catch (ThreadAbortException)
{
}
}
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
Позже Binding декларации:
Binding bind = new Binding("InputRead");
bind.Mode = BindingMode.OneWay;
BindingOperations.SetBinding(newtextbox, TextBox.TextProperty, bind);
Я понимаю, что часть проблемы, почему это не работает (текстовое поле полностью пустое) потому что я не обновляю его каждый раз, когда поток работает. Как мне это сделать? Также я подозреваю, что объявление Binding ошибочно. Я не знаю, как это сделать.
Я прочитал статью MSDN о привязке данных, это помогло мне зайти так далеко.
Я googled это то, как я получил это далеко, также с помощью Stackoverflow ранее, до сих пор нет успеха.
EDIT: Я немного изменил код, но текстовое поле пусто (даже не 0). Я использую wpf! Если это проще, может ли кто-нибудь помочь мне использовать диспетчер.
Спасибо!
Что рамки пользовательского интерфейса вы используете? 'Winforms',' WPF' – Fabio
wpf, извините за то, что не сказал, что – zadrian
_может ли кто-нибудь помочь мне использовать dispatcher.invoke_ Wpf является безопасным с перекрестными потоками. Поднятое событие 'PropertyChanged' будет перенаправлено обратно в поток пользовательского интерфейса. – Fabio