在WPF中创建控制台输出窗口窗格

时间:2014-07-21 08:16:58

标签: c# wpf

在WPF中,我正在尝试创建一个输出窗口。它应该像控制台输出,它显示一些函数的活动信息,如输出消息,函数调用的时间等,类似于VS的输出窗格。为此,我想创建一个带有文本块的组合框,然后根据需要更改其文本:

<Windows x:Class="MyProject.MainWindow" ... >
    <Grid Margin="0">

        <!-- Some other UI member may come here -->

        <GroupBox Header="Console" Grid.Column="1" Margin="0,590,0,0" HorizontalAlignment="Stretch" x:Name="ConsoleWindow" IsEnabled="True" VerticalAlignment="Stretch"
                  >
            <TextBlock x:Name="myConsoleWindowTextBlock"/>
        </GroupBox>

    </Grid>
</Window>

在后面的代码中,我创建了一个更改文本的函数:

    public void changeConsoleWindowText(string userProvidedString)
    {
        myConsoleWindowTextBlock.Text = userProvidedString;            
    }

现在,我可以通过以下方式更改其他课程中的文字:

MainWindow testConsole = new MainWindow();
testConsole.changeConsoleWindowText("This is a test to change the text.");

这里的问题是,每次我更改文本时,我都需要刷新MainWindow以查看效果,这根据此处的代码是合理的。但这不是我想要的,也不是有效的。我需要它只需刷新ConsoleWindow的{​​{1}}成员即可显示更改后的新文字。此外,我试图逃避任何多线程的方式。经过大量搜索后我无法找到任何解决方案。你对此有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:1)

将ViewModel类的字符串属性绑定到TextBox并填充此属性而不是使用方法。此字符串属性需要具有INotifyPropertyChanged接口。