我正在編寫一個更正文本文件中的值的程序。在我的xaml中,我有一個應該報告狀態/進度的文本框。 「等待」=程序啓動前,「處理」=程序正在處理文件,「完成」=文件已被處理。在按鈕上更改文本單擊,然後在運行後再次運行
下面是文本字段和RUN鍵我的XAML代碼:
<TextBox x:Name="statusBox" HorizontalAlignment="Left" Height="23" Margin="130,332,0,0" TextWrapping="Wrap" Text="waiting" VerticalAlignment="Top" Width="120" FontSize="14" TextAlignment="Center" IsReadOnlyCaretVisible="True" >
<Button Content="Run"
Name="Run"
HorizontalAlignment="Left"
Margin="562,27,0,0"
VerticalAlignment="Top"
Width="53"
Click="Run_Click"
RenderTransformOrigin="-0.305,0.487" Height="19">
<Button.BindingGroup>
<BindingGroup Name="btnOpen"/>
</Button.BindingGroup>
<Button.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="-0.848"/>
<TranslateTransform/>
</TransformGroup>
</Button.RenderTransform>
</Button>
這裏是我遇到的問題:
我已經嘗試了這許多不同的方式。我在下面是最近的嘗試。
//In XAML, the status defaults to "waiting".
public class Operate
{
public void operations()
{
statusBox.Text = "processing";
... Perform Text Operations
status.Text = "finished";
}
}
當我運行該程序時,在狀態文本框中看到「正在等待」。但是,當我點擊運行時,程序開始,但文本仍然顯示「正在等待」。然後,程序運行結束後,文本變爲「完成」,而不改變爲「處理」。
任何幫助,非常感謝。我已經編寫了許多控制檯應用程序,但對wpf來說是相對較新的。
謝謝。
我認爲這只是一個錯字,而不是'statusBox.Text'而不是'status.Text'。無論如何,如果你刪除所有內容並保留'statusBox.Text =「處理」;'它會改變嗎? –
要使用更長的操作,您需要使用'ThreadPool'。這裏是一個例子:http://stackoverflow.com/questions/36521365/run-program-after-wpf-windows-form-appears –
真的有一百種方法去做這件事,但最好的將使用ASYNC和捆綁。一旦你學會了如何在WPF/XAML中開始綁定,它將會走很長的路。 –