I am trying to use a text box to show completion of tasks. In principle, how the console application will show what is happening.
However, the text in the text box is updated only after Window_Loaded_1 completes, then all the text will be displayed instead of real-time.
xaml code:
<Window x:Class="timelineTesting.Windows.CreateNewProject" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="CreateNewProject" Height="300" Width="579" Loaded="Window_Loaded_1"> <Grid> <Grid.RowDefinitions> <RowDefinition/> </Grid.RowDefinitions> <TextBox Text="{Binding Path=LogData, UpdateSourceTrigger=PropertyChanged}" /> </Grid>
C # code:
public partial class CreateNewProject : Window, INotifyPropertyChanged { private string _data; public String LogData { get { return _data; } set { _data = value; OnPropertyChanged("LogData"); } } public CreateNewProject() { InitializeComponent(); this.DataContext = this; } private void Window_Loaded_1(object sender, RoutedEventArgs e) { Task t = new Task(() => Directory.CreateDirectory(this.ProjectName)); LogData+="Starting new project creation...." + Environment.NewLine; LogData += "Creating project directory '" + ProjectName + "'...."; try { t.Start(); t.Wait(); } catch (Exception ex) { LogData += "Error:" + Environment.NewLine; LogData += ex.InnerException.ToString(); } LogData+= "Done!" + Environment.NewLine; t = new Task(() => File.Copy(this.VideoFilePath, newVideoPath)); LogData+= "Copying video file to project directory...."; try { t.Start(); t.Wait(); } catch (Exception ex) { LogData+= "Error:" + Environment.NewLine; LogData+= ex.InnerException.ToString(); } LogData+= "Done!" + Environment.NewLine;
source share