2012-05-07 5 views
3

Width属性が150に達するまで動的に展開することをお勧めします。その後、ユーザーはドラッグでさらに展開することができます(MaxWidthはこれを許可しません)。WPFでWidth = "150 *"の逆を行う方法は?

Width="150*" 

は、同様の機能を持ちますが、反対方向(最小幅と必要に応じて拡大)です。私は「必要に応じて展開する」と最大の拡張幅を持たせたい。

XAMLを使用してこれを行う方法はありますか?

+0

にこれを設定することができますが、 'MaxWidthの=を試してみました"Width =" Auto "'と組み合わせた "150"これにより、必要に応じてスペースが割り当てられますが、最大150pxに確保されます。 Star-Syntaxを使用しても機能しません。単に相対的な幅を記述するだけです(兄弟と比較して)。 –

+0

はい、MaxWidthを使用すると、ユーザーはコントロールのサイズをMaxWidthより大きいサイズに変更できなくなります。私はMaxWidthが自動サイジングにのみ適用され、ユーザができることではないことを希望します – serentei

+0

Width = "150 *" 'とは逆の意味で正確にはどういう意味ですか? –

答えて

0

ユーザーがドラッグできるように、エッジに線を配置します。その行のCursorプロパティを "SizeWE"に設定して、ユーザーがドラッグできることがわかるようにします。その行から、マウスの操作、マウスの移動、およびマウスのアップイベントを処理します。 MouseDownでは、ラインコントロールからCaptureMouse()を呼び出し、マウスの位置を保存します。マウスを動かすと、新しいマウスの位置を取得し、マウスの下の位置からの変化を計算し、マウスの移動量によって150に制限されたコントロールの幅を右方向に戻し、元のマウスの位置をリセットします現在のマウス位置に移動します。 MouseUpで、ラインコントロールからReleaseMouse()を呼び出します。

これが役に立ちます。

0

アイテムのサイズに応じて、プログラムで幅を設定できます。 GridLengthに幅をバインドして、ユーザー・コントロールにそれをさせることができ、またはそれは150

private GridLength _marquee1Width = new GridLength(150, GridUnitType.Pixel); 

に自分自身をコントロールするあなたはGridUnitType.PixelGridUnitType.Auto、またはGridUnitType.Star

関連する問題