2つのコントロールがあり、それぞれに動的コンテンツがあるため、幅はautoに設定されています。 しかし、私はそれらを整列させたいと思いますし、何らかの方法で幅をリンクする必要があります。2つのコントロールの最大幅を選択し、Silverlightで両方のコントロールに割り当てます。
したがって、Control_1の幅はautoです。 Loadedイベントの後、そのサイズは200になります。もう1つのCotnrol_2は250になります。そして、最初に幅を250に調整する必要があります。
2つのコントロールがあり、それぞれに動的コンテンツがあるため、幅はautoに設定されています。 しかし、私はそれらを整列させたいと思いますし、何らかの方法で幅をリンクする必要があります。2つのコントロールの最大幅を選択し、Silverlightで両方のコントロールに割り当てます。
したがって、Control_1の幅はautoです。 Loadedイベントの後、そのサイズは200になります。もう1つのCotnrol_2は250になります。そして、最初に幅を250に調整する必要があります。
なぜ、幅プロパティをViewModelのプロパティにバインドしないのですか。この方法では、1つの幅プロパティが変更された場合、その値に応じて、他のプロパティの幅を変更することができ、それがコントロールに反映されます。
2つのコントロールのSizeChangedイベントを処理すると、このようなことが起こります。私はこのコードをテストしていないので、私はそれが幅にコントロールのWidth
を設定するかどうかわからない
void ControlAOrB_SizeChanged(object sender, SizeChangedEventArgs e)
{
double maxWidth = Math.Max(controlA.ActualWidth, controlB.ActualWidth);
controlA.Width = maxWidth;
controlB.Width = maxWidth;
}
:私は、次のようなイベントハンドラに両方のコントロールでこのイベントを配線したいです既に別のSizeChangedイベントが発生し、このイベントハンドラを再度呼び出して、無限再帰を引き起こします。したがって、コントロールの幅を現在maxWidth
未満の場合はmaxWidth
に設定することが考えられます。
私はバインディングを使ったアプローチが特にうまく機能しないと思います。 FrameworkElementのActualWidth
プロパティは、コントロールがレンダリングされた実際の幅を返しますが、依存プロパティではないため、ActualWidth
にバインドすることはできません。
私はその解決策が気に入らない、それは私に汚れているように見える。また、私はこれらのコントロールの子のWidthプロパティを設定しようとしているので、イベントや何か他のものを再スローする必要があります。 – Walkor
Luke Woodward氏によると、コントロールはWidthプロパティを 'Auto'とは異なるものに変更せず、ActualWidthはDPではありません。 – Walkor