0

私のUserControl
タスクは、高さと幅のサイズの比率を制御することです。(コンテナーがコントロールに挿入されると、サイズが変更されます。) コントロールを厳密に正方形にする必要があります。

コントロールの新しいサイズを変更するにはどうすればよいですか? SizeChangedEventArgs.NewSizeプロパティは読み取り専用です。

private void MyControl_SizeChanged(object sender,SizeChangedEventArgs e)
{
    if (e.NewSize.Height!=e.NewSize.Width)
    {
        // to-do ?
    }
}

モードが Auto に設定されているため、私の場合の幅と高さは NaN です。幅または高さのプロパティを手動で変更することはできません。これは、コントロールが自動的にサイズを固定し、配置されているグリッドをスケーリングしても変更されないためです。

4

1 に答える 1

3

コントロールを正確に正方形にしたい場合、最も簡単な方法は次のようなバインディングを使用することです。

<Control Width="{Binding RelativeSource={RelativeSource Self}, Path=ActualHeight}"/>

編集 OK、イベントハンドラーでうまくいくようです:

FrameworkElement control =(sender as FrameworkElement);
double longerSideLength = (control.Width >= control.Height ? control.Width : control.Height);
control.Width = longerSideLength;
control.Height = longerSideLength;

呼び出し数を減らすために、それにいくつかの検証を追加することをお勧めします...

于 2013-03-01T09:23:51.317 に答える