C# - 组件引用 - Dispacher.CheckAccess()

标签 c# wpf reference dispatcher ref

我有一个问题。我需要使用传递一个参数(对控件的引用)的函数:

public void recalculateFontSize(ref TextBlock component)
{
...
}

我想使用它但不知道如何将 Dispatcher 与“ref”关键字连接起来

    private void textResizer(ref TextBlock component)
    {
        if (component.Dispatcher.CheckAccess())
        {
            textUtils.recalculateFontSize(ref component);
        }
        else
        {
            component.Dispatcher.Invoke(new Action<TextBlock>(textResizer), component);
        }
    }

如何修改component.Dispatcher.Invoke ???

最佳答案

传递 UI 控件几乎总是我会说的坏主意。

为什么不稍微调整一下逻辑,以便您可以在 View 中使用绑定(bind)(我认为您正在使用 WPF,因为涉及 Dispatcher)

这样您的 ViewModel 将公开 RecalculateFontSize 命令,然后您的 View 将绑定(bind)到 ViewModel 可以根据每个请求更改的字体大小属性。

这样,在您的命令中,您可以通过 Dispatcher.CheckAccess 检查访问权限,并在 UI 线程中调用 FontSize 的重新计算。

关于C# - 组件引用 - Dispacher.CheckAccess(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585669/

相关文章:

java - 通过 jni 将每个引用的参数从 C++ 传递到 Java

c# - 将 'Which branch?' 字段添加到 TFS 中的工作项

wpf - 从 CoerceValueCallback 抛出异常是否合适

c++ - 如何在 C++ 中拥有私有(private)成员变量和对它们的引用

wpf - 使用MVVM在WPF中选择列表框的项目

c# - 如何给 DevExpress BarButtonItem 添加 Style?

c++ - 分配对指针数组的引用

c# - 如何从 C# 应用程序发送 Windows Media Center 远程 WM_INPUT 消息?

c# - 如何连接到dbf数据库

c# - 使用C#从Formstack获取提交的数据?