3

更新された問題:

WPFでは、GridView(内の)を使用してペアListViewのリストを表示します。Textbox-Sliderこのような各ペアは、単一の列の正確に1つのセルに配置されます(DockPanel各ペアにaを使用します)。

スライダーの幅は最小であるため、折りたたまれたり、テキストボックスが折りたたまれたりすることはなく、入力を受け取ると動的にサイズが変更されます。

問題は、テキストボックスの幅が増加しても、列の幅が同等に変更されないことです。これにより、対応する行のスライダーが右側で視覚的にクリップされます。その結果、スライダーのノブは、右端に移動するとボイド内に消えます。

したがって、問題は、コンテンツが使用可能なスペース(初期化時に設定された)を超えた場合に、グリッドビューの列幅を動的にサイズ変更するにはどうすればよいですか?

ノブが消えるパーセンテージスライダー

テキストボックスとスライダーの間のラベルを無視してください(これがないと、動作は変わりません)。

4

3 に答える 3

2

それを行う1つの方法は、ラベルのイベントを取得してグリッドにバブルし(sizeChanged)、ラベルのサイズに比例してグリッドのサイズを変更することです...

于 2012-10-08T12:08:18.920 に答える
1
Size containerSize=new Size(100, 100);
public Size CalculateSize(FrameworkElement visualBlock, Size containerSize)
{
    visualBlock.Measure(containerSize);
    return visualBlock.DesiredSize;
}

このコードは、コンテナ内でレンダリングするためのフレームワーク要素のサイズを取得します。その後、プログラムでサイズを設定できます。正しい作業のために親のサイズを知る必要があります。

于 2012-10-11T08:25:29.927 に答える
1

一部のコンテナは、おそらく を介してクリップするClipToBoundsか、背景色の実装方法によっては、別の列からオーバーレイされる場合があります。

于 2012-08-30T19:00:02.567 に答える