Vinculando seqüências constantemente atualizadas com caixa de texto
Desejo vincular uma String a uma caixa de texto. A cadeia de caracteres está sendo constantemente atualizada em um thread:
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));
}
}
Posteriormente na declaração de vinculação:
Binding bind = new Binding("InputRead");
bind.Mode = BindingMode.OneWay;
BindingOperations.SetBinding(newtextbox, TextBox.TextProperty, bind);
Entendo que parte do problema por que isso não está funcionando (a caixa de texto está completamente vazia) é porque eu não a atualizo toda vez que o thread é executado. Como eu faço isso? Também suspeito que a declaração Binding é falha, não sei como.
Eu li o artigo do MSDN sobre ligação de dados, que me ajudou a chegar até aqui.
Eu pesquisei no Google que foi assim que cheguei até aqui, também com a ajuda do Stackoverflow anteriormente, ainda sem sucesso.
EDITAR: Eu editei o código um pouco, ainda a caixa de texto está vazia (nem mesmo 0). Estou usando o wpf! Se for mais fácil, alguém poderia me orientar a usar o dispatcher.invoke?
Obrigado!