从WPF中的后台工作线程读取控制值



我正试图从后台工作人员读取控件的值。

有很多关于如何从后台线程更新控件的例子,但我还没有找到一个如何从中读取的例子

目前,我已经创建了一个结构来传递给后台工作人员,但它看起来不太优雅。

结构:

public struct Arguments
    {
        public string version;
        public bool isChecked;
        public Arguments(string Version, bool IsChecked)
        {
            version = Version;
            isChecked = IsChecked;
        }
    }

按钮点击事件

 Arguments pass = new Arguments(Version.Text.Trim(), (bool)Credentials.IsChecked);
 export.RunWorkerAsync(pass);

DoWork事件

ExportSolution export = new ExportSolution(this, messageBox);
Arguments pass = (Arguments)e.Argument;
export.Export(pass.version, pass.isChecked);

这很好,但我想做以下或类似的

DoWork事件

 ExportSolution export = new ExportSolution(this, messageBox);             
 export.Export(Access Version.Text.Trim() from here, ditto (bool)Credentials.IsChecked);

TIA

这就是我最终要做的:

    string version;
    bool isChecked;
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = validator;
        //export.DoWork +=new DoWorkEventHandler(export_DoWork);
        export.DoWork += (sender, args) =>
        {
            ExportSolution exports = new ExportSolution(this, messageBox);
            Dispatcher.Invoke((Action)(() => version = Version.Text.Trim()));
            Dispatcher.Invoke((Action)(() => isChecked = (bool)Credentials.IsChecked));
            exports.Export(version, isChecked);
        };
    }

其中Version是一个文本框,Credentials是一个复选框。

如果您正在处理代码隐藏,您可以将DoWork事件作为Lambda表达式

例如。

DoWork+=(_,_)=>{...}

然后在labda表达式中,您可以看到外部作用域,还可以看到windows控件的名称和buttob。

相关内容

最新更新