У меня есть свойство зависимости под названием xpos с привязкой к текстовому полю.Я смог без проблем отобразить значение моего свойства зависимости в текстовом поле.Однако у меня есть Arduino, с которым я говорю поочередно.Я использую другой поток, чтобы прочитать любые входящие данные.В этом потоке предполагается, что некоторые данные изменят свойство my зависимости.Проблема заключается в том, что функция, выполняемая потоком, является статической, а свойство зависимости не является статическим.Я не могу вызвать свойство в этой функции.
Я пытался сделать свойство статичным, но это вызвало другие ошибки.
<TextBox Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" Height="20" TextWrapping="Wrap" VerticalAlignment="Center" Width="50" Margin="12.4,10,0,10" Name="Xdisplay" Text="{Binding xpos, ElementName=CurrentWindow}" IsReadOnly="True" TextChanged="Xdisplay_TextChanged"/>
Thread Readthread = new Thread(Read);
static public Boolean _continue = true;
static public SerialPort com;
com.BaudRate = Convert.ToInt32(Rates.Text);
com.PortName = Ports.
com.Open();
MessageBox.Show("Connection Successful");
Readthread.Start();
public static readonly DependencyProperty xposproperty =
DependencyProperty.Register("xpos", typeof(float), typeof(Window), new PropertyMetadata(null));
public float xpos
{
get { return (float)GetValue(xposproperty); }
set { SetValue(xposproperty, value); }
}
public static void Read()
{
while (_continue)
{
try
{
string message = com.ReadLine();
if(message.Contains("max limit reached"))
{
MessageBox.Show(message);
switch (message.Substring(0))
{
case "x":
max = true;
xpos = int.Parse(message.Substring(20, message.Length));
break;
case "y":
ypos = int.Parse(message.Substring(20, message.Length));
break;
}
}
Console.WriteLine(message);
}
catch (TimeoutException) { }
}
}