ウィンドウを別々のセクション(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. 不可能:アーカイブされていないパスを取得するにはどうすればよいですか?
- 3. WPF - MainWindowインスタンスを取得するにはどうすればよいですか?
- 4. HTMLで静止画像の調整可能な「ビュー」を取得することは可能ですか?
- 5. Google Chromeプレディクタを調整するにはどうすればよいですか?
- 6. Windowsで反復可能なCPUバウンド・ベンチマーク・ランタイムを取得するにはどうすればよいですか?
- 7. lwIPのmem_mallocから使用可能なメモリを取得するにはどうすればよいですか?
- 8. Rubyの列挙可能なオブジェクトのクラスを取得するにはどうすればよいですか?
- 9. 機能エントリポイントを取得するにはどうすればよいですか?
- 10. std :: istreamから利用可能なバイト数を調べるにはどうすればよいですか?
- 11. ポップアップフォームのレイアウトを調整するにはどうすればいいですか?
- 12. スクロール可能なLinearLayout内でEditTextをスクロール可能にするにはどうすればよいですか?
- 13. WPF:再利用可能なフォームテンプレートを作成するにはどうすればよいですか?
- 14. CakePHPの整数列の整数値を取得するにはどうすればよいですか?
- 15. Windows XPでWPFウィジェットの「ネイティブ」な外観を取得するにはどうすればよいですか?
- 16. Tkinterのスクロールバーでフレームを取得するにはどうすればよいですか?
- 17. app.configにユーザが調整可能な設定を保存するにはどうしたらいいですか?
- 18. WPFで使用可能なフォントを取得するには
- 19. wpfアプリケーションで開いているファイルパス文書を取得するにはどうすればよいですか?
- 20. 小さなメモリフットプリントでG1GCを調整するにはどうすればよいですか?
- 21. WPFアプリケーションで不可能なドラッグアンドドロップを検出するにはどうすればいいですか?
- 22. Javaプログラムの実行可能ファイルを取得するにはどうすればよいですか?
- 23. アラートメッセージ(iOS)なしでwebviewでジオロケーションの許可を取得するにはどうすればよいですか?
- 24. iframeから親フレームにアクセスできないようにするにはどうすればよいですか?
- 25. iPhoneアプリケーションでNSStringから整数値を取得するにはどうすればよいですか?
- 26. WPF ToolkitのDataGridのテンプレート列をソート可能にするにはどうすればよいですか?
- 27. リストをクリック可能にするにはどうすればよいですか?
- 28. Chrome:フレーム要素のウィンドウを取得するにはどうすればよいですか?
- 29. WPFでキャンバス上にボタンの位置を取得するにはどうすればよいですか?
- 30. WPFテキストブロックで段落を取得するにはどうすればよいでしょうか? (改行文字?)