如何设置WPF中另一个类的元素的可见性?

托比·奥比

我有一个额外的课的小程序。Main线程中,我启动了另一个线程,该线程启动了该类中的方法。现在,我将从类中设置标签的可见性。我试图这样做:

MainWindow main = new MainWindow();
...
main.lable.Visibility = Visibility.Visible;

该程序给我的错误是线程必须是STA-Thread

我怎样才能做到这一点?谢谢!

维克

修改UI的线程必须是STA thread而且它必须有一个消息循环,所以我们正在谈论您的应用程序主线程您可以在此处阅读有关WPF线程的更多信息

关键是您必须使用Dispatcher.BeginInvoke方法

为了解决您的问题,假设它lable是公共的,请在辅助线程中尝试使用以下代码:

main.Dispatcher.BeginInvoke(
    DispatcherPriority.Normal, 
    new Action(() => main.lable.Visibility = Visibility.Visible));

希望对您有所帮助。

编辑

我用一个关于从辅助线程更新UI的简单示例来编辑我的答案:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        Task task = new Task(new Action(() => ExecuteOnSeparateThread()));
        task.Start();
    }

    private void ExecuteOnSeparateThread()
    {
        Thread.Sleep(2000);

        this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, 
            new Action(() => Label.Foreground = Brushes.Red));
    }
}

我不知道您的完整代码,因此我只能通过提供一个可以引导您走正确道路的示例来帮助您。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WPF根据另一个元素设置DataGridTextColumn可见性

在另一个元素的悬停事件上设置元素可见性

如何将可见性从另一个类设置为属于活动的 textview 和 imageview?

如何限制仅在不同程序包中的另一个类中的类可见性?

从另一个类中的另一个线程更改视图可见性

如果另一个元素具有类,则更改元素的可见性

角度-如何在另一个组件中切换一个组件中某个元素的可见性?

从另一个类更改webView可见性

从另一个类更改 JFrame 的可见性

我如何从另一个类访问对象的方法,而该类的可见性不高?

CSS-悬停一个元素,更改另一个元素的可见性

根据另一个div或元素的存在来更改一个DIV的可见性

当我将ImageView的可见性设置为GONE LinearLayout时,它的一个子项保留,另一个在android中消失

根据另一个视图的可见性隐藏一个视图

如何使用 Javascript 延迟文本框的可见性,然后在第一个框可见后隐藏另一个框

如何从另一个 WinForm C# 更改控制器的可见性

为什么Java 5+中的volatile不能确保另一个线程的可见性?

Inform7 中另一个人的全局可见性?

如何通过使用 jquery 将鼠标悬停在另一个 html 元素上来更改另一个 html 元素的可见性/不透明度?

子类成员变量对另一个子类的可见性

Kentico 10 基于另一个 webpart 控制 webpart 的可见性

SCSS:更改父级的另一个孩子的可见性

根据另一个组件的状态更改React组件可见性

另一个未更新的MVVM可见性属性

为一个元素设置初始可见性和设置动画可见性之间是否存在冲突?

如何控制 Android 中的可见性,这是一个错误吗?

如何设置一个班级从另一个可见?

Android相对布局-根据另一个小部件的可见性对齐小部件父级

滚动到另一个元素时如何使我的元素可见?