Вам необходимо использовать концепции привязки данных WPF.Я предлагаю ознакомиться с этой статьей stackoverflow , в которой есть несколько хороших ссылок на различные учебные пособия.
Как говорится, вот изменение в вашем коде, которое должно помочь вам начать: я добавил привязку к вашемуметка LabelElapsedTime
называется LapsedTime
.
<StackPanel>
<Button Content="Start" Height="20" Width="50" HorizontalAlignment="Left" Name="ButtonStart" Click="ButtonStart_Click"/>
<Label Content="Elapsed Time (Milliseconds):"/>
<Label Name="LabelElapsedTime"
Content="{Binding ElapsedTime, RelativeSource={RelativeSource AncestorType=Window}}"/>
</StackPanel>
и привязка сопоставляется со свойством зависимости с тем же именем LapsedTime
в вашем главном окне следующим образом:
public partial class MainWindow : Window
{
private StatusOfWork _StatusOfWork;
public MainWindow()
{
InitializeComponent();
}
public static readonly DependencyProperty ElapsedTimeProperty =
DependencyProperty.Register(nameof(ElapsedTime), typeof(string), typeof(MainWindow));
public string ElapsedTime
{
get { return (string)GetValue(ElapsedTimeProperty); }
set { SetValue(ElapsedTimeProperty, value); }
}
private async void ButtonStart_Click(object sender, RoutedEventArgs e)
{
for(int count = 0; count < 10; count ++)
{
ElapsedTime = string.Format("{0}", count);
await Task.Delay(1000);
}
this.Close();
}
}
Дляради простоты, я сохранил свойство в виде строки, но вы можете использовать другой тип данных.Вам нужно будет использовать ValueConverter
.Ссылки в упомянутой выше статье stackoverflow объясняют это более подробно.
Дополнительно : Я предполагаю, что исключение, которое вы получили с использованием потока, вероятно, является исключением отправки.Это хорошая статья , которая поможет вам понять, как это исправить.