2012-05-14 28 views
1

我遇到問題。我需要使用的通過一個參數(對於對照參考)功能:C# - 組件參考 - Dispacher.CheckAccess()

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

我想使用它,但不知道如何調度員「裁判」關鍵字連接:S

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 ???

+0

問題是什麼? – Jon

+0

這不應該是'ref'。 – SLaks

+0

爲什麼需要ref? – Tilak

回答

1

傳遞UI控件總是幾乎是個壞主意,我會說。

爲什麼不調整的邏輯一下,讓你可以在你查看使用綁定(我想你正在使用WPF作爲調度員參與)

,使您的視圖模型將暴露RecalculateFontSize命令,然後你的視圖是綁定到ViewModel可以根據請求更改的Font Size屬性。

在您的命令中,您可以通過Dispatcher.CheckAccess檢查訪問並調用UI線程中的FontSize重新計算。

0

您不能在匿名方法體中使用ref或out參數。

0

好的,thx。但有另一個想法來做到這一點。 人們可以簡單地使用這樣的事情:

<Viewbox> 
    <TextBlock Text="Bla bla bla" TextWrapping="Wrap" /> 
</Viewbox> 

偉大的作品。

另一種方法是創建ObjectDataProvider資源並將TextBlock綁定到它。 Here's more info:http://msdn.microsoft.com/en-us/library/aa348824.aspx