我有一个问题。我需要使用传递一个参数(对控件的引用)的函数:
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/