2

私は問題があります。1 つの引数 (コントロールへの参照) を渡す関数を使用する必要があります。

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

使いたいのですが、「ref」キーワードで Dispatcher を接続する方法がわかりません: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 の変更方法 ???

4

3 に答える 3

1

UI コントロールを渡すことは、常にほとんど悪い考えです。

ビューでバインディングを使用できるように、ロジックを少し調整してみませんか (Dispatcher が関与しているため、WPF を使用していると思います)。

ViewModel が RecalculateFontSize コマンドを公開し、ViewModel が要求ごとに変更できる Font Size プロパティに View がバインドされるようにします。

そうすれば、コマンドで Dispatcher.CheckAccess を介してアクセスを確認し、UI スレッドで FontSize の再計算を呼び出すことができます。

于 2012-05-14T15:01:00.477 に答える
0

わかりました、thx。しかし、これを行う別のアイデアがあります。単純に次のようなものを使用できます。

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

よく働く。

もう1つの方法は、ObjectDataProviderリソースを作成し、TextBlockをそれにバインドすることです。詳細は次のとおりです:http://msdn.microsoft.com/en-us/library/aa348824.aspx

于 2012-05-15T12:33:09.230 に答える
0

匿名メソッド本体で ref または out パラメーターを使用することはできません。

于 2012-05-14T15:03:06.793 に答える