ウィンドウを別々のセクション(DockPanel、StackPanelなど)に分割するときに使用するオプションがいくつかあります。私のWindowsアプリケーションでは、ユーザーが実行時にさまざまなセクションのサイズを調整できる必要があります。これは、ユーザーがHTMLでFRAME幅を調整できる方法と似ています。誰もがC#WPFでこれを達成するために使用するコントロールのタイプ/タイプの提案はありますか?ユーザーがどのようにセクション境界にマウスを乗せてクリックしてサイズを調整するかを示すコードがあれば理想的です。WPFで調整可能な「フレーム」を取得するにはどうすればよいですか?
3
A
答えて
5
System.Windows.Controls.GridSplitter
http://msdn.microsoft.com/en-us/library/system.windows.controls.gridsplitter.aspx
例:
<Grid VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="5" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ListBox Grid.Row="0" >
<TextBlock>Hello</TextBlock>
</ListBox>
<GridSplitter Grid.Row="1"
Height="5" Background="Gray"
VerticalAlignment="Top"
HorizontalAlignment="Stretch" />
<ListBox Grid.Row="2" >
<TextBlock>World</TextBlock>
</ListBox>
</Grid>
0
ここでいずれの方向にも、プログラムでフレームを作る例です。
var topTB = new TextBox();
var middleTB = new TextBox();
var bottomTB = new TextBox();
var g = MakeSideBySideFrames(this.Root, topTB, middleTB, bottomTB);
g.Height = 300.0;
public Grid MakeTopBottomFrames(Panel parent, params UIElement[] items)
{
return MakeFrames(parent,
newPosition: (g, len) => { g. RowDefinitions.Add(new RowDefinition { Height = len }); },
setPosition: (item, inx) => { Grid.SetRow(item, inx); },
items: items);
}
public Grid MakeSideBySideFrames(Panel parent, params UIElement[] items)
{
return MakeFrames(parent,
newPosition: (g, len) => { g.ColumnDefinitions.Add(new ColumnDefinition { Width = len }); },
setPosition: (item, inx) => { Grid.SetColumn(item, inx); },
items: items);
}
Grid MakeFrames(Panel parent,
Action<Grid, GridLength> newPosition,
Action<UIElement, int> setPosition,
params UIElement[] items
)
{
var g = new Grid();
parent.Children.Add(g);
for (var inx = 0; inx < items.Length; inx++)
{
if (inx > 0)
{
newPosition(g, new GridLength(5));
var gs = new GridSplitter();
g.Children.Add(gs);
setPosition(gs, (inx * 2) - 1);
gs.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
gs.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
gs.Background = new SolidColorBrush(Colors.Black);
gs.ShowsPreview = true;
}
newPosition(g, new GridLength(1, GridUnitType.Star));
g.Children.Add(items[inx]);
setPosition(items[inx], inx * 2);
}
return g;
}
関連する問題
- 1. サイドセルと調整可能な中央セルの最小幅で調整可能なテーブルを作るにはどうすればいいですか
- 2. iOSでカスタムキーボードのフレームを調整するにはどうすればよいですか?
- 3. このような拡張可能なレイアウトを取得するにはどうすればよいですか?
- 4. Pygalでツールチップを調整するにはどうすればよいですか?
- 5. Jquery:「スライダ」機能に「選択可能」な値を取得するにはどうすればよいですか?
- 6. 不可能:アーカイブされていないパスを取得するにはどうすればよいですか?
- 7. WPF - MainWindowインスタンスを取得するにはどうすればよいですか?
- 8. Google Chromeプレディクタを調整するにはどうすればよいですか?
- 9. レイアウトを調整するにはどうすればよいですか?
- 10. リプルタッチのクリック可能なフレームをXamarin.Forms 2.5に移行するにはどうすればよいですか?
- 11. Windowsで反復可能なCPUバウンド・ベンチマーク・ランタイムを取得するにはどうすればよいですか?
- 12. その間、スタックで実行可能なカバレッジを取得するにはどうすればよいですか?
- 13. iOSで利用可能なシステムサウンドのリストを取得するにはどうすればよいですか?
- 14. Visual Studio Codeで実行可能なPythonファイルを取得するにはどうすればよいですか?
- 15. スクロール可能なflex-growでパディングを取得するにはどうすればよいですか?
- 16. 編集可能なDataTableセルでクリックイベントを取得するにはどうすればよいですか?
- 17. HTMLで静止画像の調整可能な「ビュー」を取得することは可能ですか?
- 18. lwIPのmem_mallocから使用可能なメモリを取得するにはどうすればよいですか?
- 19. Rubyの列挙可能なオブジェクトのクラスを取得するにはどうすればよいですか?
- 20. std :: istreamから利用可能なバイト数を調べるにはどうすればよいですか?
- 21. 機能エントリポイントを取得するにはどうすればよいですか?
- 22. WPF:再利用可能なフォームテンプレートを作成するにはどうすればよいですか?
- 23. ポップアップフォームのレイアウトを調整するにはどうすればいいですか?
- 24. ウィケットアプリケーションのパフォーマンスを調整するにはどうすればいいですか?
- 25. Rmarkdownで大きなテーブルを回転または調整するにはどうすればよいですか?
- 26. Windows XPでWPFウィジェットの「ネイティブ」な外観を取得するにはどうすればよいですか?
- 27. スクロール可能なLinearLayout内でEditTextをスクロール可能にするにはどうすればよいですか?
- 28. cssで移動可能なボタンをプッシュ可能にするにはどうすればよいですか?
- 29. WPFアプリケーションで不可能なドラッグアンドドロップを検出するにはどうすればいいですか?
- 30. wpfアプリケーションで開いているファイルパス文書を取得するにはどうすればよいですか?