実現したいこと
スクロールを使って大量の箇条書きの表示を行いたいです。
また、その箇条書きの作成方法についてよい方法があれば教えていただきたいです。
背景
yt-dlpのGUIを作ってみようと思っています。
yt-dlpのオプションが膨大な量あるため、ウィンドウサイズが小さい時などにすべて表示しきれなくなることが想定されます。
その時にスクロールできるようになればいいなぁと思っています。
また、オプションが増えるたびにGrid.Rowを追加しているのですが、このの書き方だと利用するオプションが増えるたびにGrid.Rowが増えるし、既存のオプションの間に新しいオプションの追加すると地獄みたいになる気がします。
しかし、Grid.Rowの代わりにStackPanelを利用するとGrid.Columnによる横方向の整列に対する影響や、ScrollViewerが二つになってしまう問題があります。
発生している問題・エラーメッセージ
ScrollViewerを利用しているのですが、実行した際にウィンドウサイズを小さくして、箇条書き部分が見切れたとしてもスクロールができません。
該当のソースコード
問題のScrollViewerの利用部分は「<!--保存を動画と音声のどちらでするかの選択 row="2"-->」から始まるtabControlの部分です。
xml
1<Window x:Class="yt_dlp_gui.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:yt_dlp_gui" 7 mc:Ignorable="d" 8 Title="MainWindow" Height="450" Width="800"> 9 <Grid> 10 <Grid.RowDefinitions> 11 <RowDefinition Height="Auto" /> 12 <RowDefinition Height="Auto" /> 13 <RowDefinition Height="Auto" /> 14 <RowDefinition Height="Auto" /> 15 <RowDefinition Height="Auto" /> 16 </Grid.RowDefinitions> 17 <Grid.ColumnDefinitions> 18 <ColumnDefinition Width="1.5*" /> 19 <ColumnDefinition Width="15*" /> 20 <ColumnDefinition Width="1.5*"/> 21 </Grid.ColumnDefinitions> 22 23 <!--メニュー row="0"--> 24 <DockPanel LastChildFill="False" 25 Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" > 26 <Menu DockPanel.Dock="Top" Background="#0000" Height="20" BorderBrush="Black" BorderThickness="0,0,0,1"> 27 <MenuItem Header="ヘルプ"/> 28 <MenuItem Header="ツール"/> 29 <MenuItem Header="オプション"/> 30 </Menu> 31 </DockPanel> 32 33 <!--ダウンロードする動画のURLの入力欄 row="1"--> 34 <Label Content="URL" 35 Margin="5,5,5,5" 36 Grid.Row="1" Grid.Column="0" /> 37 <TextBox Margin="5,5,5,5" 38 Grid.ColumnSpan="2" Grid.Row="1" Grid.Column="1"/> 39 40 <!--保存を動画と音声のどちらでするかの選択 row="2"--> 41 <TabControl Margin="5" 42 Grid.ColumnSpan="3" Grid.Row="2" Grid.Column="0"> 43 <!--動画形式で出力する場合--> 44 <TabItem Header="動画"> 45 <ScrollViewer> 46 <Grid> 47 <Grid.ColumnDefinitions> 48 <ColumnDefinition/> 49 <ColumnDefinition/> 50 </Grid.ColumnDefinitions> 51 <Grid.RowDefinitions> 52 <RowDefinition/> 53 <RowDefinition/> 54 </Grid.RowDefinitions> 55 56 <Label Content="クオリティ" 57 Grid.Column="0" Grid.Row="0"/> 58 <ComboBox SelectedIndex="0" 59 Grid.Column="1" Grid.Row="0"> 60 <ComboBoxItem Content="最高"/> 61 </ComboBox> 62 63 <Label Content="フォーマット" 64 Grid.Column="0" Grid.Row="1"/> 65 <ComboBox SelectedIndex="0" 66 Grid.Column="1" Grid.Row="1"> 67 <ComboBoxItem Content="mp4"/> 68 </ComboBox> 69 <Label Content=""/> 70 </Grid> 71 </ScrollViewer> 72 </TabItem> 73 74 <!--音声形式で出力する場合--> 75 <TabItem Header="音声"> 76 <Grid Background="#FFE5E5E5"/> 77 </TabItem> 78 </TabControl> 79 80 <!--保存先の設定 row="3"--> 81 <Label Content="保存先" 82 Margin="5" 83 Grid.Row="3" Grid.Column="0"/> 84 <TextBox Name="save_path" 85 Margin="5" 86 Grid.Row="3" Grid.Column="1"/> 87 <Button Content="参照" 88 Name="select_folder_dialog" 89 Click="select_folder_dialog_Click" 90 Margin="5" 91 Grid.Row="3" Grid.Column="2"/> 92 93 <!--保存ボタン row="4"--> 94 <Button Content="保存" 95 Name="download_and_save_button" 96 Click="download_and_save_button_Click" 97 Margin="5" 98 Grid.Row="4" Grid.Column="2"/> 99 </Grid> 100</Window> 101
補足情報(FW/ツールのバージョンなど)
.Net Framework 4.7.2
で作成しています。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/13 02:32