0

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

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

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

结构:

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);

工作活动

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

4

2 回答 2

1

这就是我最终做的事情:

    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 是一个复选框。

于 2012-09-17T14:49:02.600 回答
0

如果您正在处理 Code Behind,您可以将 DoWork 事件作为 Lambda 表达式执行,

例如。

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

然后在labda 表达式中你可以看到外部范围,你可以看到windows 控件的名称和按钮。

于 2012-09-14T13:56:12.307 回答